00.微服务概述

0. 前言

1. 是什么

业界大牛马丁.福勒(Martin Fowler)这样描述微服务 : https://martinfowler.com/articles/microservices.html

就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style)

但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。

每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。

微服务化的核心就是将传统的一站式应用,根据业务拆分成一个个的服务,彻底地去耦合,每一个微服务提供单个业务功能,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库.

2. 微服务与微服务架构

微服务

强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,
狭意的看,可以看作Eclipse里面的一个个微服务工程/或者Module

微服务架构


微服务架构是⼀种架构模式,它提倡将单⼀应⽤程序划分成⼀组⼩的服务,服务之间互相协调、互相配合,为⽤户提供最终价值。每个服务运⾏在其独⽴的进程中,服务与服务间采⽤轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。
每个服务都围绕着具体业务进⾏构建,并且能够被独⽴的部署到⽣产环境、类⽣产环境等。另外,应当尽量避免统⼀的、集中式的服务管理机制,对具体的⼀个服务⽽⾔,应根据业务上下⽂,选择合适的语⾔、⼯具对其进⾏构建。

3. 微服务优缺点

优点

  • 每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求
  • 开发简单、开发效率提高,一个服务可能就是专一的只干一件事
  • 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成
  • 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的
  • 微服务能使用不同的语言开发
  • 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, Hudson, bamboo
  • 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值
  • 微服务允许你利用融合最新技术
  • 微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合
  • 每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库

缺点

  • 开发人员要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 性能监控……

4. 微服务技术栈

5. 选择SpringCloud的理由

  • 整体解决方案和框架成熟
  • 社区热度高
  • 可维护性好
  • 学习曲线

6.国内各大公司微服务技术

  • 阿里 Dubbo/HSF
  • 京东 JSF
  • 新浪微博 Motan
  • 当当网 DubboX

7. 各微服务框架对比

资源获取

公众号回复 : SpringCloud思维导图

Tips

欢迎收藏和转发,感谢你的支持!(๑•̀ㅂ•́)و✧

欢迎关注我:后端小哥,专注后端开发,希望和你一起进步!