SpringCloud微服务架构及其示例



一:微服务架构介绍

image





1:微服务架构--单体架构

单体架构:单体系或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构。


1-1:单体架构特点:

  1. 打包成一个独立的单元(导成一个唯一的jar包或者是war包)
  2. 会 一个进程的方式来运行。

image

1-2:单体架构的 优点、缺点

  • 优点:
  1.        项目易于管理
  2.        部署简单
  • 缺点:
  1.           测试成本高
  2.           可伸缩性差
  3.           可靠性差
  4.           迭代困难
  5.           跨语言程度差
  6.           团队协作难

        









2:微服务架构

2-1:什么是微服务

微服务是 一种架构风格。一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可独立部署。各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好的完成该任务。


2-2:常见的架构风格

  • 客户端与服务端
  • 基于组件模型的架构(EJB)
  • 分层架构(MVC)
  • 面向服务架构(SOA)

2-3:微服务特点:

  1. 系统是 由多个服务构成
  2. 每个服务可以单独独立部署
  3. 每个服务之间是松耦合的。服务内部是高内聚的。外部是低耦合的。高内聚是每个服务只关注完成一个功能。




2-4:微服务的优缺点:

  • 优点:
  1. 测试容易
  2. 可伸缩强
  3. 可靠性强
  4. 跨语言程度会更加灵活
  5. 团队协作容易
  6. 系统迭代容易



  • 缺点:
  1.       运维成本过高,部署数量较多
  2.       接口兼容版本多
  3.       分布式系统的复杂性
  4.       分布式事务

     











3:MVC 、RPC、SOA、微服务架构之间的区别


                             image


3-1:MVC架构

其实MVC架构就是一个单体架构。

代表技术:Struts2、SpringMvc、Spring、MyBatis 等等。







3-2:RPC

RPC(Romote Procedure Call):远程过程调用。是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

代表技术:Thrift、Hessian等等。





3-3:SOA

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

ESB(Enterparise Servce Bus):企业服务总线,服务中介。只要提供了一些服务与服务之间的交互。

Esb包含的功能如:负载均衡、流量控制,加密处理,服务的监控,异常处理,监控告急等等。

代表技术:Mule、WSO2、





3-4:微服务

微服务及时一个轻量级的服务治理方案。

代表技术:SpringCloud、dubbo等等;






4:如何设计微服务以及设计原则

  • 1) AKF 拆分原则
  • 2) 前后端分离原则
  • 3) 无状态服务
  • 4) RestFul 的通信风格

4-1:AKF 拆分原则

业界对于可扩展的系统架构设计有一个朴素的理念,就是:

通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。 我是个段子:(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两 顿。)

这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!对于一个规模 迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前, 系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上 的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许 多系统,在架构设计时并未充分考虑到这些问题,导致系统的重构成为常态,从 而影响业务交付能力,还浪费人力财力!对此,《可扩展的艺术》一书提出了一个更加系统的可扩展模型—— AKF 可扩展立方 (Scalability Cube)。这个立方 体中沿着三个坐标轴设置分别为:X、Y、Z

image




4-1-1:Y 轴(功能)

Y 轴扩展会将庞大的整体应用拆分为多个服务。每个服务实现一组相关的功 能,如订单管理、客户管理等。在工程上常见的方案是 服务化架构(SOA) 。比 如对于一个电子商务平台,我们可以拆分成不同的服务,组成下面这样的架构 :

image

但通过观察上图容易发现,当服务数量增多时,服务调用关系变得复杂。为 系统添加一个新功能,要调用的服务数也变得不可控,由此引发了服务管理上的混乱。所以,一般情况下,需要采用服务注册的机制形成服务网关来进行服务治 理。系统的架构将变成下图所示:

image

4-1-2:X 轴(水平扩展)

X 轴扩展与我们前面朴素理念是一致的,通过绝对平等地复制服务与数据,以解决容量和可用性的问题。其实就是将微服务运行多个实例,做集群加负载均 衡的模式。

为了提升单个服务的可用性和容量, 对每一个服务进行 X 轴扩展划分

image






























为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
转载请标注出处!
原文地址:https://www.cnblogs.com/ios9/p/14956342.html