这两天看了一个微服务专栏,希望有个感性的认识,分两篇。
微服务的定义
是一种架构风格,一组组小的服务之间互相协作;每个服务运行在独立的进程中,服务之间采用轻量级的通信机制协助;每个服务具备业务能力,能够自动化部署;服务可以使用不同的语言开发,也可以使用不同的技术。
微服务是有特定边界的,松散耦合的面向服务的架构。
那么微服务的好处是什么呢?强调边界,独立部署,技术多样性(单体技术有的时候会让一种技术用到底,比如我们?)
坏处就是复杂度,拆分的颗粒度太细,不管是运维还是一致性都很复杂。
康威法则
微服务的理论基础就是康威法则,公司的沟通方式和组织结构决定了系统的架构,而反康威法则就是产品的架构决定了公司的组织架构。
反康威法则意味着开发者像微服务一样:专注于某一件事情,而且努力做的最好,但他们之间不是孤立的,强调沟通。
何时引入微服务
单体应用意味着随着规模变大,会遇到伸缩性的问题,部署困难,会出现技术负债,当然不代表单体应用一无是处,它仍然有架构概念。
单体应用在产品发展早期功不可没,开发效率也较高,但随着规模越来越大,微服务的效率可能更高,所以达到一定规模才建议使用微服务,100人以上?
如果搞不定单体应用就不要去搞微服务。
微服务组织架构
从职能型到跨职能型,强调End-end ownership,每个人要全程跟进,对个人的挑战很大?微服务是组织架构的重组,如何理解。
中台
是微服务的一种具体形式?
- 业务前台:
搭积木? - 业务中台:
业务层,我们的业务层是什么?
核心服务是什么? - 技术中台:
PassS和IaaS
如果这么理解,中台并非新概念,只是一个组织概念的理解。
服务分层
和微服务的关系是什么?是为了更好的理解微服务?分层和组件化是解耦的永恒处理。
- 基础服务、核心领域服务、公共服务、中间层服务
- 聚合服务、适配服务、边界服务、BFF(前端和后端的中间层):
裁剪、聚合
微服务架构总体技术体系
感觉好熟悉呢?