#author("2022-12-20T14:44:58+08:00","default:Admin","Admin")
#author("2022-12-20T14:45:14+08:00","default:Admin","Admin")
[[Microservice]]

#contents

三大阶段,单体到SOA,再到微服务

* 微服务的定义 [#xb837bce]

- 微服务架构模式
- Microservice
- Dr. Peter Rodgers2005 Cloud Computing Expo技术大会上提出概念
- 2007, Netflix开始向微服务架构师进发,
- 并最终开源了自己研发的Java微服务框架
- 开源社区命名为Spring Cloud
- 微服务是一种新型的 软件架构风格
- 把单个巨型服务应用,分解为多个独立的、微小的服务程序
- 单独部署
- 单独伸缩
- 去中心化:数据中心、管理中心
- 敏捷性、灵活性、需求变化,更加高效的软件架构模式

* 微小的服务 [#a47dd47e]

- 微服务架构:将单个应用拆分成多个独立的、微小的服务。
- 每个小服务程序运行在独立的进程中。
- 服务与服务之间通过轻量协议通信。
- 通信机制互相协作、互相配合,从而为终端用户提供业务价值。
- 每个小服务,可以采用不同的语言、框架、工具 独立开发、测试、部署、运维。
- 微服务:独立的小服务。


*架构特点 [#z4def98e]

** 通过服务实现组件化 [#t895d973]

开发者不再需要协调其它服务部署对本服务的影响。

** 按业务能力来划分服务和开发团队 [#qa197e73]

开发者可以自由选择开发技术,提供 API 服务

** 去中心化 [#f75aacd2]

- 每个微服务有自己私有的数据库持久化业务数据
- 每个微服务只能访问自己的数据库,而不能访问其它服务的数据库
- 某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的数据库,而是通过对于微服务进行操作。
- 数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术(SQL、NoSQL等)。在复杂的业务场景下,如果包含多个微服务,通常在客户端或者中间层(网关)处理。

** 基础设施自动化(devops、自动化部署) [#t5ef2c4e]

Java EE部署架构,通过展现层打包WARs,业务层划分到JARs最后部署为EAR一个大包,而微服务则打开了这个黑盒子,把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能实现集中化管理(因为服务太多啦,不集中管理就无法DevOps啦)。

#hr();
Comment:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS