SpringBoot与SpringCloud微服务项目交付
Spring Cloud微服务项目交付 微服务扫盲篇 微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。 单体应用架构 如下是传统打车软件架构图: 这种单体应用比较适合于小项目,优点是: 开发简单直接,集中式管理 基本不会重复开发 功能都在本地,没有分布式的管理开销和调用开销 当然它的缺点也十分明显,特别对于互联网公司来说: 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断 代码维护难:代码功能耦合在一起,新人不知道何从下手 部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉 扩展性不够:无法满足高并发情况下的业务需求 微服务应用架构 微服务架构的设计思路不是开发一个巨大的单体式应用,而是将应用分解为小的、互相连接的微服务。一个微服务完成某个特定功能,比如乘客管理和下单管理等。每个微服务都有自己的业务逻辑和适配器。一些微服务还会提供API接口给其他微服务和应用客户端使用。 比如,前面描述的系统可被分解为: 每个业务逻辑都被分解为一个微服务,微服务之间通过REST API通信。一些微服务也会向终端用户或客户端开发API接口。但通常情况下,这些客户端并不能直接访问后台微服务,而是通过API Gateway来传递请求。API Gateway一般负责服务路由、负载均衡、缓存、访问控制和鉴权等任务。 微服务架构优点: 解决了复杂性问题。它将单体应用分解为一组服务。虽然功能总量不变,但应用程序已被分解为可管理的模块或服务 体系结构使得每个服务都可以由专注于此服务的团队独立开发。只要符合服务API契约,开发人员可以自由选择开发技术。这就意味着开发人员可以采用新技术编写或重构服务,由于服务相对较小,所以这并不会对整体应用造成太大影响 微服务架构可以使每个微服务独立部署。这些更改可以在测试通过后立即部署。所以微服务架构也使得CI/CD成为可能 微服务架构问题及挑战 微服务的一个主要缺点是微服务的分布式特点带来的复杂性。开发人员需要基于RPC或者消息实现微服务之间的调用和通信,而这就使得服务之间的发现、服务调用链的跟踪和质量问题变得的相当棘手。 微服务的一大挑战是跨多个服务的更改 比如在传统单体应用中,若有A、B、C三个服务需要更改,A依赖B,B依赖C。我们只需更改相应的模块,然后一次性部署即可。 在微服务架构中,我们需要仔细规划和协调每个服务的变更部署。我们需要先更新C,然后更新B,最后更新A。 部署基于微服务的应用也要复杂得多 单体应用可以简单的部署在一组相同的服务器上,然后前端使用负载均衡即可。 微服务由不同的大量服务构成。每种服务可能拥有自己的配置、应用实例数量以及基础服务地址。这里就需要不同的配置、部署、扩展和监控组件。此外,我们还需要服务发现机制,以便服务可以发现与其通信的其他服务的地址 以上问题和挑战可大体概括为: API Gateway 服务间调用 服务发现 服务容错 服务部署 数据调用 https://www.kancloud.cn/owenwangwen/open-capacity-platform/1480155,自助餐吃吃喝喝,竟然秒懂微服务 微服务框架 如何应对上述挑战,出现了如下微服务领域的框架: Spring Cloud(各个微服务基于Spring Boot实现) Dubbo...