基于Spring Cloud的微服务构建学习-1 基础知识

来源:互联网 发布:彩票计划软件 编辑:程序博客网 时间:2024/05/17 21:53

基于Spring Cloud的微服务构建学习-1 基础知识

什么是微服务架构

  微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协议。

  

  每个微服务都维护者自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协议,官网:www.fhadmin.org 所以这些微服务可以使用不同的语言来编写。

为什么需要微服务

  在业务发展初期,由于所有的业务逻辑在一个应用中,开发、测试、部署都还比较容易且方便。但是,随着企业发展,系统为了应对不同的业务需求会不断为该单体项目增加不同的业务模块(前端展现模块以及提供支持的各种借口模块。。。),随着业务需求的增长,单体应用变得越来越臃肿。往往修改一个小功能,都有可能影响到其他功能的运行。最终增加了维护成本,且难以控制(性能容量评估)。

使用微服务会带来什么问题

  微服务虽然带来了很多吸引人的优点,但是也因为服务的拆分引发了很多原本在单体应用中没有的问题:

  • 运维的新挑战:在微服务架构中,运维人员需要维护的进程数量将会大大增加。如何有效编排运维过程是一个重要的问题(自动化)。
  • 接口的一致性:虽然拆分了服务,但业务逻辑上的依赖并不会消除,只是从单体应用的代码依赖变为通信依赖。因此我们需要更完善的接口和版本管理,或是严格遵循开闭原则
  • 分布式的复杂性:由于拆分后的各个微服务都是独立部署并运行在各自的进程内,它们只能通过通信来进行协作,所以分布式环境的问题都将是微服务架构系统设计时要考虑的重要因素,比如网络延迟、分布式事务、异步消息等。

微服务的九大特性

  • 服务组件化:组件,是一个可以独立更换和升级的单元。就像PC中的CPU、内存、显卡、硬盘一样,独立且可以更换升级而不影响其他单元。

                                                                                    可插拔

  • 按业务组织团队:面对大型项目的时候,对于微服务团队的拆分更加建议按业务线的方式进行拆分,一方面可以有效减少服务内部修改所产生的内耗;另一方面,团队边界可以变得更加清晰。

                          

  • 做“产品”的态度:在实施微服务架构的团队中,每个小团队都应该以做产品的方式,对其产品的整个生命周期负责。有助于增加开发者对具体业务的理解,发现更多的问题。
  • 智能端点与哑管道:在微服务架构中,通常会使用①RESTful API或轻量级的消息发送协议,实现信息传递与服务调用的触发②在轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件。
  • 去中心化治理:在集中化的架构治理方案中,通常在技术平台上都会制定统一的标准,但是也许该技术在某一个问题上处理效果并不好,不得不花费大力气去解决,由于底层原因,最终成为系统的瓶颈,而微服务就不存在这样的问题,微服务采用轻量级的契约定义接口,使得我们对于服务 本身的具体技术平台不再那么敏感。降低了对开发人员的技术水平要求。
  • 去中心化管理数据:每个微服务都有自己的数据库。分布式事务本身的实现难度非常大,所以在微服务架构中,尽量做到服务之间“无事务”的调用,而对于数据一致性,达到最终一致性即可。

     

  • 基础设施自动化:虽然应用程序个头变小了,但数量增多了,增加了运维难度。所以在构建微服务架构中,务必从一开始就构建起“持续交付”平台来支撑整个实施过程。该平台需要两大内容:自动化测试和自动化部署
  • 容错设计:在单体应用中,一般不存在单个组件故障而其他部件还在运行的情况,一般是一挂全挂,而在微服务中则存在这种情况,这也是微服务的好处(实现这种好处就需要有良好的容错设计)。在微服务架构中,快速检测出故障源并尽可能地自动恢复服务是必须被设计和考虑的。通常,我们都希望在每个服务中实现监控和日志记录的组件,比如服务状态、断路器状态、吞吐量、网络延迟等关键数据的仪表盘等。

 

  • 演进式设计:

  1.以单体系统的方式设计和实施(系统初期体量不大,构建维护成本不高)

  2.将经常变化的业务进行微服务处理

  3.稳定的业务模块变成一个核心微服务

为什么选择Spring Cloud

  微服务架构属于分布式架构,分布式架构中遇到的问题在微服务的架构中也会面对。

  现在已经有了很多解决分布式系统难题的现成的开源框架,针对同一个问题,解决方案也是多种多样的,但是他们的侧重点不同,所以还需要根据具体项目作出选择。

  对于刚接触微服务的人来说,如何选择框架也是一个艰难的问题。

  Spring Cloud集成了很多主流的分布式框架,提供了综合的解决方案,省去了很多框架学习时间以及开发时间(约定由于配置、自动化配置)。

阅读全文
0 0
原创粉丝点击