【笔记】01 -- Spring-Cloud介绍

第一章节我们主要是介绍微服务 springCloud的架构和分布式的区别

但是后面会主要介绍netflix公司与Alibaba公司的两套架构

系统架构

   **概述**
	随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。
	系统架构也因此也不断的演进、升级、迭代。
	从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构
集中式架构
	概述
		当网站流量很小时,只需一个应用
		将所有功能都部署在一起,以减少部署节点和成本
		从头到尾就一个工程,部署的时候 , 只需要打成一个war包
	特点
		代码耦合,开发维护困难
		无法针对不同模块进行针对性优化
		无法水平扩展
		单点容错率低,并发能力差
垂直拆分
	概述
		当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分
	特点
		系统拆分实现了流量分担,解决了并发问题
		可以针对不同模块进行优化
		方便水平扩展,负载均衡,容错率提高
		系统间相互独立,会有很多重复开发工作,影响开发效率

系统架构分类

微服务
	概述
		微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库
	微服务的特点
		单一职责
			微服务中每一个服务都对应唯一的业务能力,做到单一职责
		服务拆分粒度很小
			例如一个用户管理就可以作为一个服务
		面向服务
			面向服务是说每个服务都要对外暴露服务接口API
			并不关心服务的技术实现
			做到与平台和语言无关
			不限定用什么技术实现,只要提供Rest的接口即可
		自治
			自治是说服务间互相独立,互不干扰
分布式服务
	概述
		当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务
		分布式,就是将偌大的系统划分为多个模块(这一点和微服务很像)部署到不同机器上
		因为一台机器可能承受不了这么大的压力
		各个模块通过接口进行数据交互,其实 分布式也是一种微服务。
	特点
		将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率
		系统间耦合度变高,调用关系错综复杂,难以维护
微服务和分布式的区别
	微服务与分布式都是把模块拆分开来变为独立的单元,提供接口来调用
	他们本质的区别在于目标的不同,
		分布式的目标是
			一台机器承受不了的,或者是成本问题 , 不得不使用多台机器来完成服务的部署
		微服务的目标 
			只是让各个模块拆分开来,不会被互相影响,比如模块的升级亦或是出现BUG等等... 
微服务要面临的问题
	服务治理(SOA)
		概述
			当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,
			此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
			(SOA)用于提高机器利用率的资源调度和治理中心
		问题
			服务越来越多,需要管理每个服务的地址
			调用关系错综复杂,难以理清依赖关系
			服务过多,服务状态难以管理,无法根据服务情况动态管理
		服务治理要做什么
			服务注册中心,实现服务自动注册和发现,无需人为记录服务地址
			服务自动订阅,服务列表自动推送,服务调用透明化,无需关心依赖关系
			动态监控服务状态监控报告,人为控制服务状态
	1.监听服务有没有宕机
		部署很多服务后 ,如果监听到服务有没有宕机
	2.负载均衡,
		一个服务吃不消,要部署多个服务,部署的多个服务均衡调用
	3.熔断
		服务出现了问题,不能让程序卡在那里
	4.限流
		限流就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请求进行限流“熔断”
	5.降级
		当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,
		从而释放服务器资源以保证核心交易正常运作或高效运作
	6.网关
		统一管理API的一个网络关口、通道,是整个微服务平台所有请求的唯一入口

未完。。。

原文地址:https://www.cnblogs.com/Yangbuyi/p/13412191.html