此学习通过查阅相关资料,自己理解的方式进行总结,没有用太多的官方语言,官方语言一直不喜欢,搞得高大上,其实很简单,就是能装那个啥,看的人头疼,尤其是对新手,如果有人发现有问题请指正,谢谢。
一、单机结构
对于一个小项目,并且使用人数不多时,开发者一般会在一个项目中完成所有的开发工作,并且将其部署在一台服务器上,为用户提供访问支持。
简单理解:一个单一项目完成所有开发工作,项目部署在一个服务器上
二、集群
所有的服务器无论有多好,其性能都有上限,受限于网络带宽、单机内存、CPU等,系统访问人数越多,服务器耗费资源越多,当用户达到一定人数,服务器资源被占用超过一定值时,这时候访问便出现卡顿,严重时出现宕机,解决这个问题,便出现了集群,将系统部署在多个服务器上,这样系统的处理数据能力便能够进行分担。
简单理解:
对于单机结构的理解:同一个系统部署在多个服务器上。
分布式中的集群:同一个业务部署在多个服务器上
节点:集群中的每台服务器便是一个节点。
负载均衡:
要保证每台服务器能够进行资源合理分配,用户的请求由哪个节点进行处理才能够保证也就是所有的服务器能够共同分担压力,当然是选择负载最小的服务器了,做这些事需要一个专门调度者,在请求服务前,将请求给调度者,调度者根据节点负载情况进行分配到底是由哪个节点进行请求处理,这个调度者就是负载均衡。
适合于大量用户访问同一组应用程序的情况
三、分布式
当一个系统业务比较庞大而复杂的时候,如果还用单机结构就会开发困难,功能模块之间的耦合度增高,导致项目臃肿,维护困难,并且业务扩展困难,甚至无法扩展。分布式能够解决以上问题也能够解决高并发引起的问题。
简单理解:根据系统业务进行拆分成为多个子系统,并且每个子系统能够单独进行独立开发,测试和部署,然后通过RPC远程调用实现子系统之间的通信。
四、SOA
百科解释:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
说实话没看懂( ╯□╰ )
四、微服务
查阅资料,没有标准定义。它是面向服务的体系结构(SOA)架构样式的一种变体
简单理解:将系统架构按照业务划分为不同的小的子业务进行设计开发的方法,每个子业务都是独立的应用,可单独使用,并可复用。
提示:微服务中不同的子系统可以用不同的开发语言进行开发,比如系统中用户管理用java开发,数据统计模块用python开发完全是可以的。
五、CAP理论
百科:在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
其中的分区容错性是必须的,所以一般需要满足AP或者CP,但也并不是说就放弃了另外一个,只是另外一个要做到极致的好是不行的
一致性:指所有的节点(每个子业务是一个节点)其数据都是最新的
可用性:数据拥有高可用性
分区容错性:
百科:是指系统能够容忍节点之间的网络通信的故障。
分区:节点之间的网络一般是连通的,如果出现问题,某些节点之间不连通了,这时候网络就分成了几块区域。
六、springcloud
springcloud是一种微服务架构,依赖于springboot。将业务拆分为多个模块。
springcloud五大组件:
1、服务注册与发现——Netflix Eureka
分为服务端Eureka server与客户端Eureka Client,服务端负责服务注册与发现,客户端分为服务提供者与服务消费者,客户端向服务注册中心Eureka Server 注册,服务端会将服务名称与对应的ip形成一份清单,客户端访问其他服务根据服务名访问到对应的ip的服务器
2、负载均衡——Netflix Ribbon
对客户端进行负载均衡
3、断路器——Netflix Hystrix
当某个服务访问异常或者访问时间过长时,将不再访问到接口,直接以异常结果返回,防止后续任务持续等待产生雪崩
4、服务网关——Netflix Zuul
微服务各接口不安全需要进行鉴权,网关可以对请求进行安全认证。当然还有其他功能优点,这里不多介绍
5、配置中心——Spring Cloud Config
微服务中服务多,基本每个服务都有配置,配置中心是将众多服务的配置进行集中管理