微服务的九大特征?你了解吗

举报
架构师聊技术 发表于 2022/12/06 22:15:10 2022/12/06
【摘要】 Martin Fowler 大师总结的微服务应该具备的特性,也是从这个总结之后,微服务才迎来了大发展,同时这9大特征也是验证设计的架构原则性指标

Martin Fowler 大师总结的微服务应该具备的特性,也是从这个总结之后,微服务才迎来了大发展,同时这9大特征也是验证设计的架构原则性指标

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。
  1. 服务组件化:在微服务架构中,需要我们对服务进行组件化分解,服务是一种进程外的组件,它通过HTTP等通信协议进行协作,而不是像传统组件那样镶入式的方式协同工作,每一个服务都独立开发、部署、可以有效避免一个服务的修改引起整个系统的重新部署。
  2. 按业务组织团队:在实施微服务架构时,需要采用不同的团队分割方法。由于每一个服务都是针对特定的业务的宽栈或者全栈实现的,既要负责数据的持久化存储,又要负责用户接口定义等各种跨专业领域的职能。因此面对大型项目的时候,对于微服务团队的拆分更加建议按业务线的方法进行拆分,一方面可以有效的减少服务内部修改所产生的内耗,另一方面,团队边界可以变得更为清晰。
  3. 做“产品”的态度:在微服务架构团队中,每个小团队都应该以做产品的方式,,对其整个生命周期负责,而不是像传统项目开发那样,交付给测试,运维为目标。
  4. 智能端点与哑管道:由于各个服务不在一个进程中,组件间的通信模式发生了改变,原本进程内的方法调用变成了RPC方式的调用,会导致微服务之间产生烦琐的通信,使得系统表现更为糟糕,所以我们需要更粗粒度的通信协议:HTTP的RESTful API或者轻量级的消息发送协议、消息队列(Message Queue)用于业务解耦,极度强调性能的情况下,还有可能使用二进制的消息发送协议如protobuf。
  5. 去中心化治理:在整个微服务架构,通过采用轻量级的契约定义接口,使得我们队服务本身的具体技术平台不再那么敏感,这样整个微服务架构系统中的各个组件就能针对不同的业务特点选择不同的技术平台。
  6. 去中心化管理数据:在实施微服务架构时,希望每一个服务自己来管理其数据库,这就是数据管理的去中心化,虽然数据管理的去中心化让数据管理更加细致化,让数据存储和性能达到最优,但是不同的数据库实例,数据一致性也成了微服务架构中亟待解决的问题之一,分布式事务本身实现的难度就非常大,所以在微服务架构中,我们更强调各服务之间进行”无事务“的调用,而对数据一致性,一般只强调“最终一致性”。
  7. 基础设施自动化:在微服务架构中,务必从一开始就构建起“持续继承”、”持续交付“平台来支撑整个实施过程。
  8. 容错设计:在微服务架构中,快速检测出故障源并尽可能地自动恢复服务是必须被设计考虑的,通常我们都希望在每个服务中实现监控和日志记录的组件。比如日志报警、服务熔断、服务降级等。

在现实开发架构设计中,虽然不是从零开始搭建,但根据这些特征来选择基础框架、设计架构做指引,是非常有必要的

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。