如何精准把握微服务服务层接口粒度,避免过度或合并?
- 内容介绍
- 文章标签
- 相关推荐
本文共计269个文字,预计阅读时间需要2分钟。
假设有四个类:Product、ProductImage、ProductAttachment。以下是简化后的开头内容:
javaclass Product { private Long productId;}
class ProductImage { private Long productId; private Long productImageId;}
class ProductAttachment { private Long productId; private Long productAttachmentId;}
假设有四个类classProduct{假设有四个类class Product {
1private Long productId;}
class ProductImage {
123private Long productId;private Long productImageId;}
class ProductAttachment {
123private Long productId;private Long productAttachmentId;}
class ProductDto extends Product {
123private List images;private List productAttachments;}
微服务架构里,服务接口设计如下:1 细粒度:提供三个单独的接口,其他服务调用这三个接口获取数据,另外在Api网关聚合成ProductDto后直接返回给前端interface ProductService {
12345Product getProduct(Long productId);List listProductImage(Long productId);List listProductAttachment(Long productId);}2 粗粒度:提供一个聚合接口,其他服务调用这个接口,另外Api网关只做转发返回给前端interface ProductService {
1ProductDto getProduct(Long productId);}
请问大家更倾向于哪种方式,怎么把握服务层的接口粒度?
本文共计269个文字,预计阅读时间需要2分钟。
假设有四个类:Product、ProductImage、ProductAttachment。以下是简化后的开头内容:
javaclass Product { private Long productId;}
class ProductImage { private Long productId; private Long productImageId;}
class ProductAttachment { private Long productId; private Long productAttachmentId;}
假设有四个类classProduct{假设有四个类class Product {
1private Long productId;}
class ProductImage {
123private Long productId;private Long productImageId;}
class ProductAttachment {
123private Long productId;private Long productAttachmentId;}
class ProductDto extends Product {
123private List images;private List productAttachments;}
微服务架构里,服务接口设计如下:1 细粒度:提供三个单独的接口,其他服务调用这三个接口获取数据,另外在Api网关聚合成ProductDto后直接返回给前端interface ProductService {
12345Product getProduct(Long productId);List listProductImage(Long productId);List listProductAttachment(Long productId);}2 粗粒度:提供一个聚合接口,其他服务调用这个接口,另外Api网关只做转发返回给前端interface ProductService {
1ProductDto getProduct(Long productId);}
请问大家更倾向于哪种方式,怎么把握服务层的接口粒度?

