微服务架构有三个特点,分别是“微”、分布式、共享。
微服务的“微”体现在其单一职责和独立自治,微服务可以自己进行部署、升级、扩容等操作。
由于独立自治,它的第二个特点就是分布式,即微服务是去中心化的,服务之间是对等关系,然后用轻量级的这种通信将API能力共享出去。基于共享服务可以快速组装创新出新的能力。
微服务使大型的复杂应用程序可以持续交付与持续部署。每个服务都相对较小并容易维护。微服务可以独立服务、独立部署,更容易实验和采纳新的技术,也有着更好的容错性与可靠性。
但是不是所有的系统都要采用微服务架构。对于微服务来说,服务越小,独立性更好,但是相应的服务数量就越多。每个服务都需要独立的配置部署监控、日志收集等,成本呈指数级增长。
微服务经常使用异步编程、消息队列及并行处理,如果要求一个操作必须是同步且具有事物性,就需要管理好相关联服务及分布式事务操作。微服务的测试也比较困难,无论人工还是自动测试,通常都很难以一致的方式重现微服务应用环境。
作为一种分布式系统,微服务带来如网络延迟、容错性、消息序列化等一系列问题。当把传统的系统拆分成多个相互协作的独立服务后 ,随着服务数量的增多,如何清晰明了地展示服务之间的依赖关系,逐渐成为挑战。
因此要开发高质量的微服务,需要从组织流程、技术架构、平台工具、工程方法4个方面去保证。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。