微服务之旅:设计与API网关解析
1. 微服务设计要点
在设计微服务时,需要考虑多个关键因素,以确保系统的高效性、可扩展性和可维护性。
1.1 多语言架构支持
微服务诞生的一个关键需求是支持多语言架构。不同的业务能力需要不同的处理方式,“一刀切”的原则已不再适用。例如,在购物微服务系统中,产品搜索微服务可能不需要关系型数据库,而添加到购物车和支付服务则需要符合ACID原则,因为处理交易是一个非常特殊的需求。
1.2 独立可部署组件的大小
分布式微服务生态系统应充分利用当前不断增加的CI/CD流程实现自动化。将集成、交付、部署、单元测试、扩展和代码覆盖等各个步骤自动化,然后创建可部署单元,可以使开发和运维更加轻松。如果在单个微服务容器中包含过多内容,会带来巨大挑战,因为涉及安装依赖项、自动文件复制或从Git下载源、构建、部署和启动等众多流程。随着微服务复杂度的增加,其大小也会增加,管理难度也会随之增大。因此,精心设计的微服务应确保部署单元易于管理。
1.3 按需分布和扩展服务
设计微服务时,根据各种参数拆分微服务非常重要,如深入分析哪些业务能力最受关注、根据所有权划分服务、采用松耦合架构等。这样设计的微服务从长远来看是有效的,因为我们可以根据需求轻松扩展任何服务,并隔离故障点。例如,在产品微服务中,大约60%的请求是基于搜索的。在这种情况下,搜索微服务容器应单独运行,以便在需要时可以单独扩展。可以在该微服务之上引入Elasticsearch或Redis,以获得更好的响应时间,这将带来成本降低、资源有效利用、业务收益和成本优化等诸多优势。
超级会员免费看
订阅专栏 解锁全文
25

被折叠的 条评论
为什么被折叠?



