微服务架构

微服务的由来

由Martin Fowler和James Lewis在2014年共同提出
微服务架构风格是一种使用一小套小服务开发单个应用的方式,每个服务运行在自己的进程中,并且使用轻量机制通信(HTTP API),这些服务基于业务能力构建,并通过自动化部署机制独立部署(可以使用不用的编程语言,以及不同的数据存储机制来实现)

微服务是什么


微服务的核心就是将传统的一站式应用,跟还有业余拆成一个个服务,彻底的去耦合,每一个微服务提供单个业务的功能服务(一个服务只做一件事,把事情交给专业的机制去做)
从技术的角度来看微服务就是一种小而独立的处理过程,类似于进程概念,能够自己单独启动或者销毁,拥有自己独立的数据库
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力
尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等
微服务架构的思想是从与整体应用对比而产生的

微服务架构的优缺点

优点

  1. 每个服务足够内聚,足够小,代码容器容易理解,这样能聚焦一个指定的业务功能和业务需求
  2. 开发简单,开发效率高,一个服务可能就只是专一只做一件事
  3. 微服务能被小团队单独开发
  4. 微服务是松耦合的,是具有功能意义的服务,无论在开发阶段和部署阶段都是独立的
  5. 技术异构 - 微服务可以使用不同的语言开发。在一个大型系统中,不同的功能具有不同的特点,并且不同的团队可能具备不同的技术能力。因为微服务间松耦合,不同的微服务可以选择不同的技术栈进行开发,同时,在应用新技术时,可以仅针对一个微服务进行快速改造,而不会影响系统中的其它微服务,有利于系统的演进
  6. 微服务之间可以使用轻量机制(HTTP)来通信
  7. 易于和第三方集成,微服务允许集成灵活的自动部署,通过持续的集成工具(jenkis,Bamboo....)
  8. 微服务运行使用融合新技术
  9. 微服务只是业务逻辑代码,不会和HTML、CSS或其他界面组件混合
  10. 每个服务之间都有独立的存储方式和功能,可以有自己的数据库,也可以统一数据库
  11. 可扩展 - 应对系统业务增长的方法通常采用横向(Scale out)或纵向(Scale up)的方向进行扩展。分布式系统中通常要采用Scale out的方式进行扩展。因为不同的功能会面对不同的负荷变化,因此采用微服务的系统相对单块系统具备更好的可扩展性
  12. 灵活组合 - 在微服务架构中,可以通过组合已有的微服务以达到功能重用的目的(比如在示例中,如果我们要新增一个Booking Service,在预订时可以直接重用Account Service和Inventory Service检查用户权限和库存情况。)
  13. ......

缺点

  1. 开发人员要处理分布式系统的复杂性,微服务间通过REST、RPC等形式交互,相对于Monolithic模式下的API形式,需要考虑被调用方故障、过载、消息丢失等各种异常情况,代码逻辑更加复杂
  2. 多服务运维难度,随着服务增加,运维压力也在增大。在采用微服务架构时,系统由多个独立运行的微服务构成,需要一个设计良好的监控系统对各个微服务的运行状态进行监控。运维人员需要对系统有细致的了解才对够更好的运维系统
  3. 系统部署的依赖
  4. 服务之间的通信成本,相对于Monolithic架构,微服务的间通过REST、RPC等形式进行交互,通信的时延会受到较大的影响
  5. 数据的一致性(对于微服务间的事务性操作,因为不同的微服务采用了不同的数据库,将无法利用数据库本身的事务机制保证一致性,需要引入二阶段提交等技术)
  6. 系统集成测试
  7. 性能监控
  8. ......

微服务技术栈

微服务技术栈=多种技术的集合
常见的分布式微服务架构有

  • 服务治理
  • 服务注册
  • 服务调用
  • 服务负载均衡
  • 服务监控
  • .....

微服务技术栈.png

SrpingCloud

SrpingCloud概念

Srping Cloud是一个微服务框架,相比Dubbo(阿里云)的RPC框架,Srping Cloud提供了一全套的分布式系统解决方案
Srping Cloud为微服务框架开发涉及到的配置管理、服务治理、熔断机制、智能路由、微代理、控制总线、一致性Token、全局一致性锁、leader选举、分布式seesion、集群状态管理、....等操作提供了一种简单的开发方式
Srping Cloud对微服务基础框架NetFlix(全球十大视频网站的唯一收费的)的多个开源组件进行了封装,同是又实现了和云端平台以及SpringBoot开发框架的集成

Last modification:November 13, 2024
如果觉得我的文章对你有用,您可以给博主买一杯果汁,谢谢!