微服务概念

1.什么是微服务

微服务架构是一个分布式系统, 按照业务进行划分成为不同的服务单元, 解决单体系统性能等不足。
微服务是一种架构风格,一个大型软件应用由多个服务单元组成。系统中的服务单元可以单独部署,各个服务单元之间是松耦合的。

2.微服务之间通信

  • Rest Http协议
    RestTemplate
  • RPC TCP协议
    RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。它的工作流程是这样的:
  1. 执行客户端调用语句,传送参数
  2. 调用本地系统发送网络消息
  3. 消息传送到远程主机
  4. 服务器得到消息并取得参数
  5. 根据调用请求以及参数执行远程过程(服务)
  6. 执行过程完毕,将结果返回服务器句柄
  7. 服务器句柄返回结果,调用远程主机的系统网络服务发送结果
  8. 消息传回本地主机
  9. 客户端句柄由本地主机的网络服务接收消息
  10. 客户端接收到调用语句返回的结果数据
  • 异步消息队列

3.服务架构演变

3.1 单一应用架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式,一般只操作一个数据库。
代表技术: Struts2、 SpringMVC、 Spring、 MyBatis 等。

  • 特点:打包成一个独立的单元(导成一个唯一 的jar包或者是war包)。 会以一个进程的方式来运行
  • 优点:项目易于管理、部署简单
  • 缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难

3.2 RPC架构

远程过程调用。他一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。代表
技术: Thrift (Facebook 开发的系统内部各语言之间协调通讯的RPC框架,带有强大的代码生成引擎,支持跨语言、多平台调用的。Apache 官网有资料)
Hessian (基于HTTP协议的RPC框架,提供RMI功能,且采用二进制协议的轻量级框架)等等。

  • 特点:应用直接调用服务,服务之间是隔离的。
  • 缺点:服务过多时,管理成本高昂。服务治理,服务注册、发现,服务容错,服务跟踪,服务网关, IP暴露等都是此架构无法避兔的问题。

3.3 SOA架构

SOA(Service oriented Architecture):面向服务架构

  • ESB(Enterparise Service Bus):企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。
    ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。代表技
    术:Mule (Java为核心的消息框架和整合 平台,提供服务中介、数据转换、消息路由、服务创建和托管等功能。不是开源的技术,是付费产品。)
    WS02 (开源的服务总线, 提供了SOA基础设施的搭建,内置数据服务支持,服务角色管理等功能)。

3.4 微服务架构

微服务是一种架构风格。一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。
每个微服务仅关注于完成一件任务并很好的完成该任务。
微服务就是一个轻量级的服务治理方案。对比SOA架构,使用注册中心代替ESB服务总线。注册中心相比服务总线来说,更加轻量级。
代表技术: SpringCloud、 Dubbo 等等
架构风格:项目的一种设计模式。
常见的架构风格有:

  • 客户端与服务端的:在使用之前需要安装客户端的应用。如: QQ,网络游戏等。
  • 基于组件模型的架构:如: EJB (Session Bean实现业务逻辑的、Entity Bean域模型、Manager DrivenBean驱动管理模型等)
  • 分层架构(单体架构) :典型的就是MVC架构
  • 面向服务架构:将系统拆分为若干服务,业务功能基于服务实现,服务可独立配置、维护、运行,且多服务有统一的管理平台(ESB、注册中心)
    特点:系统是由多个服务构成,每个服务可以单独独立部署,每个服务之间是松耦合的。服务内部是高内
    聚的,外部是低耦合的。高内聚就是每个服务只关注完成一个功能。低耦合就是服务之间没有直接关联
    优点:
  • 测试容易:服务高内聚低耦台, 每个服务可以独立测试。
  • 可伸缩性强:服务相对独立,可随时增删服务实现系统服务变化,可针对某服务独立水平扩展
  • 可靠性强:服务出现问题,受影响的位置是当前服务,不会影响其他服务。应用健壮性有更好的保证。
  • 跨语言程度会更加灵活:可针对服务特性使用不同的语言开发,尽可能发挥出每种语言的特性。
  • 团队协作容易:团队专注自主研发的服务,对其他服务的了解可局限在服务的调用上。
  • 系统迭代容易:当服务发生变更时,只需针对单- 服务进行系统升级迭代
    缺点:
  • 运维成本过高,部署数量较多:服务过多导致运维成本成倍提升。
  • 接口兼容多版本:因服务可独立升级迭代,所以会导致接口版本过多。
  • 分布式系统的复杂性:系统分部,导致通讯成本提升,系统复杂度提升。
  • 分布式事务:分布式系统会引出分布式事务的出现,现在有很多的分布式事务解决方案,分布式事务不是不可解决的,这不会影响微服务架构的应用。
posted @ 2023-08-05 18:36  lwx_R  阅读(39)  评论(0编辑  收藏  举报