微服务概述

01微服务概述

一、什么是微服务

  1. 马丁.福勒(Martin Fowler)论文网址:https://martinfowler.com/articles/microservices.html中文
  2. 用来描述将软件应用程序设计为独立可部署服务套件的特定方法。就目前而言,虽然对于微服务业界并没有一个统一的、标准的定义,但是围绕着业务能力、自动部署、端点中的智能以及语言和数据的分散控制,围绕着组织有一些共同的特征。
  3. 简而言之架构风格是一种将单个应用程序开发为一组小服务的方法,每个服务运行在自己的流程中,并且与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机器独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。

在这里插入图片描述

从技术角度理解

  1. 微服务就是将传统的一站式项目应用,来根据业务进行拆分成一个一个的服务,从而彻底的去掉耦合。
  2. 每个微服务提供了单个业务功能的服务,说白就是一个服务一个事件也就一个独立的处理过程,类似进程的概念,能够独立运行和销毁,甚至拥有自己的数据库。
  3. 如订单就是订单,支付就是支付…

在这里插入图片描述

二、微服务与微服务架构

1. 微服务

  1. 强调的是服务的大小,关注的是某一个点,具体解决某个一个问题/落地的对应服务的一个服务应用。
  2. 如同医院中的眼科只做眼科的事,化验科只做化验科的事,换句话说,专业的事交给专业的来做。
  3. 狭意的看,可以看作Eclipse/IntelliJ IDEA里面的一个个微服务Project/或者Module

2. 微服务架构

  1. 微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
  2. 服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。
  3. 每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
  4. 应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。

换句话说,比如医院中眼科/化验科/等就一个小的服务,而对外提供一个大的服务就是医院

三、微服务优缺点

1. 优点

  1. 每个服务足够内聚,够小,代码容易理解这样能够明确的指定一个业务功能或者是业务需求。
  2. 一个微服务开发简单,开发效率高,因为一个微服务就是专一的只做一个事情。
  3. 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
  4. 微服务是松偶合的,是有功能意义的服务,无论是在开发阶段或者是在部署阶段都是独立的。
  5. 微服务可以使用不同的语言进行开发。
  6. 微服务容易与第三方的技术进行集成,允许容易且灵活的方式集成自动部署,通过持续集成工具进行集成,如Jenkins,Hudson等…
  7. 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
  8. 微服务允许利用融合新的技术。
  9. 微服务只专注业务逻辑的代码,不会和HTML/CSS等前台技术以及组件混合
    如平常开发中的两种模式:
    一种模式:前后的分离模式。程序员只是专注后端的代码,和前端工程师安装约定的Rest地址+输入的参数格式+输出的参数格式。
    二种模式:全栈开发。H5+CSS+JAVAEE…
  10. 每个微服务都有直接的存储的能力,可以拥有自己的数据库,也可以用拥有统一的数据库。

2. 缺点

  1. 开发人员要处理分布式系统的复杂性
  2. 多服务运维难度,随着服务的增加,运维的压力也在增大
  3. 系统部署依懒
  4. 服务器之间的通信成本加大
  5. 数据的一致性
  6. 系统的集成测试难度加大
  7. 性能的监控难度加大

四、微服务技术栈

微服务条目落地技术
服务开发Springboot、Spring、SpringMVC
服务配置与管理Netflix公司的Archaius、阿里的Diamond等
服务注册与发现Eureka、Consul、Zookeeper等
服务调用Rest、RPC、gRPC
服务熔断器Hystrix、Envoy等
负载均衡Ribbon、Nginx等
服务接口调用(客户端调用服务的简化工具)Feign等
消息队列Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理SpringCloudConfig、Chef等
服务路由(API网关)Zuul等
服务监控Zabbix、Nagios、Metrics、Spectator等
全链路追踪Zipkin、Brave、Dapper等
服务部署Docker、OpenStack、Kubernetes等
数据流操作开发包SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)
事件消息总线Spring Cloud Bus

五、为什么选择SpringCloud作为微服务架构

1. 选型依据

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

2. 目前各大IT公司用的微服务架构

  • 阿里Dubbo/HSF(分布式高速框架可理解二代Dubbo,俗称:好舒服)
  • 京东JSF(俗称:京舒服)
  • 新浪微博Motan(俗称:茅台)
  • 当当网DubboX

3. 各微服务框架对比

QQ截图20190721234026.png
)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值