根据维基百科定义,微服务不是整体应用程序中的一个层。相反,微服务是一个独立的业务功能,具有清晰的接口,并且可以通过内部组件实现分层架构。从战略角度来看,微服务架构基本上遵循“做一件事,就要做得好” 的Unix 哲学。为了应对传统单体架构的缺陷,微服务架构被企业广泛应用。然而,实践之前有很多问题都需要提前考虑清楚,比如 Java 背景的开发者是否更有优势?微服务、容器化、DevOps 和 CI/CD 之间的关系?如何合理进行微服务拆分、服务治理、容量规划以及人员分配?
云原生是基于云平台生态的应用程序架构的自然演化,是未来巨量数据,高速网络,以及分布式算力结合的一种新样态,将程序组件化,自治理化,可组合化,使其具备功能点算力的弹性,真正使用低成本达到不停机自升降级处理的服务最佳状态。微是为了更加透明化,细致化,能够具备自复制自缩放的弹性,同时能够更精细的监控服务的每一个节点和环节,随时替换问题节点,保证服务的最佳状态。微服务会最终走向服务网格化,基础应用组件的自由组合平台来设计开发具体商业应用。
简单来说,微服务是将大型单体应用程序和服务拆分为数个甚至数十个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。然而,这个过程涉及很多问题需要解决,比如拆分原则、容量规划、组件选择、服务治理甚至人员配比等。下面我们将详细讲解从 Java 开发者转型微服务这些年所做的思考。
如何理解微服务?微服务是一种架构模式,是业务领域组件模块的集合。通过轻量级的通信方式和比较灵活的聚合方式,微服务组合在一起,借助持续集成、持续交付等工具实现独立部署。微服务架构并不与具体编程语言绑定。回顾整个