首页 > 编程语言 > 详细

springCloud学习

时间:2019-09-08 12:28:13      阅读:52      评论:0      收藏:0      [点我收藏+]

第一章微服务架构介绍

 
(Spring Cloud 初级)
 
 

一、 单体架构

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

1 单体架构特点

 
1.1打包成一个独立的单元(导成一个唯一的 jar 包或者是 war 包)
1.2会一个进程的方式来运行
 
 
技术分享图片

 

 


 

 

 

2 单体架构的优点、缺点

 

2.1优点

 
  2.1.1项目易于管理
  2.1.2部署简单
 

2.2缺点

 
2.2.1测试成本高
  • 所有的功能都在一个项目中,比如项目要被迭代,功能要被改变,由于是一个整体,一个部分发送改变,所有部分都要进行测试。不敢保证这次跟新会不会对整体造成影响。
2.2.2可伸缩性差
  • 单体架构项目是以一个单进程来运行的,很具备局限性,水平扩展不容易。比如现在对整个系统进行扩展,比如其中一个模块,如商品模块,访问需求量过大,我们要对她进行集群部署,进行水平扩展。单体架构很难做到,我们只能对整个项目进行集群部署。
2.2.3可靠性差
  • 当前系统,某个模块出现bug,导致整个系统不可用。
2.2.4迭代困难
  • 由于所有的模块都在一个项目中,会导致日常迭代非常困难,比如说互联网项目,每个月都会进行一次迭代。单体架构会导致分支过多,分支过多在合并代码的时候,会非常痛苦。
2.2.5跨语言程度差
  • 由于我们现在系统的体系越来越庞大,需求越来越大。这时候单依靠java一门语言,显得有些力不从心。这时候我们可能还会依靠其他的语言来对项目进行支持。单体架构这时候想加入其他语言就比较难,因为单体架构是耦合在一起的。
2.2.6团队协作难
  • 整个系统是由一个团队来开发的。单体架构,里面的内容变得非常的庞大的时候,我们每个成员就要进行大量的代码。整个团队之间,进行沟通和协作就很困难。不像分布式架构,每个团队只负责一个模块,不像单体架构沟通那么困难。

 

二、 微服务架构

 

1 什么是微服务

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

2 架构风格

 
  项目的一种设计模式。
 

2.1常见的架构风格

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

 

3 微服务特点:

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

4 微服务的优点、缺点

 

4.1优点

 
4.1.1测试容易
  • 每个服务的组件都是灵活的,能独立部署,所以说测试起来的时候,对哪个服务进行了迭代,就可以征对性取进行测试。
 
4.1.2可伸缩性强
 
  •  内部高内聚,外部松耦合。每个服务都能进行相应扩展。
 
4.1.3可靠性强
  • 之前讲单体架构也说过,一单项目某个模块出现问题,受影响的是整个项目。但是微服务则不然,并不会因为某个bug而导致整个服务全部宕机。受影响的是某个服务,而不是整个项目。
 
4.1.4跨语言程度会更加灵活
 
  • 微服务的架构跟语言无关,我们可以根据自己的选择或者项目的特点去选择不同的语言和工具,高效的去完成这个项目。

 

 
4.1.5团队协作容易
  • 只做自己某一块的服务,并不需要去关注其他的服务。降低了程序员的学习成本和沟通成本。
 
4.1.6系统迭代容易
 
  • 每个微服务可以根据每个团队进行相应的独立开发。系统迭代只正对当前的服务就可以了。
 

4.2缺点

 
4.2.1运维成本过高,部署数量较多
 
  • 不像单体架构,只有一个项目,我们只要放入tomcat中运行就可以了。现在把一个项目拆分成多个服务,服务越多,运维的成本就越高。
 
4.2.2接口兼容多版本
  • 我们需要考虑到接口兼容多版本的问题。面向服务开发就是面向接口开发,服务的提供方式就是通过接口来提供的。接口的变更必然会导致多个客户端跟着改,这样就必须做接口的多版本开发。以便于适用于接口的变更。
 
4.2.3分布式系统的复杂性
  • 本来是一个系统,现在把他拆分成多个服务。由于网络的延迟性,网络的不稳定,服务的容错性,服务的负载均衡等等,都是我们我们在做微服务架构需要考虑到的一个问题。
 
4.2.4分布式事务
  • 我们在做微服务开发的时候,最大的难题就是对分布事务的处理。
 

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

 
 
  • 1 MVC 架构
 
其实 MVC 架构就是一个单体架构。
代表技术:Struts2、SpringMVC、Spring、Mybatis 等等。
 
  • 2 RPC 架构
 
RPC(Remote Procedure Call):远程过程调用。他一种通过网络从远程计算机程序上请求
服务,而不需要了解底层网络技术的协议。
代表技术:Thrift、Hessian 等等
 
  • 3 SOA 架构
 
SOA(Service oriented Architecture):面向服务架构
 
ESB(Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。
 
ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。
 
代表技术:Mule(不开源)、WSO2(开源,免费)
 
 
  • 4 微服务架构
 
微服务就是一个轻量级的服务治理方案。
 
注册中心:比ESB更清亮一些。
 
代表技术:SpringCloud、dubbo 等等
 
 
 
四、 如何设计微服务以及设计原则
 
1) AKF 拆分原则
 
2) 前后端分离原则
 
3) 无状态服务
 
4) RestFul 的通信风格
 
1 AKF 拆分原则
 
业界对于可扩展的系统架构设计有一个朴素的理念,就是:
通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。
我是个段子:(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两
顿。)
这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!对于一个规模
迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,
系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上
的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许
多系统,在架构设计时并未充分考虑到这些问题,导致系统的重构成为常态,从
而影响业务交付能力,还浪费人力财力!对此,《可扩展的艺术》一书提出了一
个更加系统的可扩展模型—— AKF 可扩展立方 (Scalability Cube)。这个立方
体中沿着三个坐标轴设置分别为:X、Y、Z。 

 

 

springCloud学习

原文:https://www.cnblogs.com/wq-9/p/11484942.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!