在构建Spring Cloud之前,需要介绍分布式和负载均衡,以便更好地理解为什么要使用Spring Cloud并更好地构建框架
本章主要通过构建分散型,首先对分散型进行说明
分布式系统是由多个处理器通过通信线路互连构成的松散耦合系统。 从系统中的一个处理器来看,其馀的处理器及其相应的资源都是远程的,只有自己的资源是本地的。 迄今为止,对分布式系统的定义尚未形成统一的见解。 一般认为分布式系统有以下四个特点。
(1)分布性。 分布式系统由多台计算机组成,地域分散,可以分布在一个单位、一个城市、一个国家甚至全世界。 因为系统整体的功能是分散在各个节点上实现的,所以分散系统具有数据处理的分散性。
(2)自治性。 分布式系统的每个节点包括其自己的处理器和存储器,并且具有独立处理数据的功能。 通常,彼此在地位上是平等的,不拥有的部分,可以一边自主地进行工作,一边利用共享的通信线路发送信息,协调任务处理。
)3)并行性。 大任务被分成几个子任务,每个任务在不同的主机上执行。
)4)全局性。 分布式系统必须存在一个全局进程通信机制,以便一个进程可以与其他进程进行通信,并且不区分本地通信和远程通信。 同时,还需要全球保护机制。 系统中的所有机器都有统一的系统调用集合,它们必须适应分散的环境。 在所有CPU上运行相同的核心有助于协调工作。
以上都是陈词滥调
用脑图分析一下方差吧。
从上图可以看出,整个系统分为三个子系统“会员系统”、“购物系统”和“销售系统”。 第一种方法是独立开发每个子系统,任何功能都需要自己实现并共享数据库。 然后,某些复用的内容将在接口中以封装方式使用。 现已发展为提取复用功能,以分布式方式直接使用。
分布式架构是将每个系统中的模块划分为多个可重用的服务,使得每个系统中的相同服务可以重用。
通过上面图7中的模块,可以整合到五个服务中
从springboot配置文件注册Spring Cloud
请按从spring boot到spring cloud (四) Spring Cloud Eureka的注册和检测中所述,直接查看此配置文件
eureka注册中心配置使用3000个端口
server :端口:3000 eureka : instance : hostname : eureka-center appname :注册中心client : registerwitheureka : 自身的fetch registry : false serviceurl 3360 default zone 33603358 localhost :3000/eureka server : enableselfpreservation : falseevictionintervaltimerinms :4000,以及服务的主要内容是name user (用户模块)
server : port :3001 eureka : instance : prefer IP address 3360 true client 3360 serviceurl 3360 default zone 3:3358本地ho one 已注册eureka spring : application : name : user server : port :3002 eureka : instance : prefer IP adddress 3360 true Clint :http://localhost :3000/eureka # # eureka spring : application : name : discount _ couponserver : port :3003 eureka : instance 3360 prefer IP address 3360 注册fault zone :3358 localhost :3000/eureka # # eureka spring 3360 application : name 3360 commodity
可以看到已经注册了3个服务提供。
package com.example.demo; importorg.spring framework.beans.factory.annotation.auto wired; importorg.spring帧web.bind.annotation.request mapping; importorg.spring帧web.bind.annotation.rest controller; importorg.spring framework.web.client.rest template; @ restcontrollerpublicclassconsumercontroller { @ autowiredprivateresttemplateresttemplate; 私有身份验证应用程序名称=’ user ‘; //服务注册名称@ request mapping (value=’ common request ‘ ) public Object commonRequest ) (string URL=’ http://’ aplication nanast ) strings=rest template.getforobject (URL,String.class ); //Ribbon方式呼叫服务return s; }私密性统计信息应用程序名称=“用户”; //服务注册名称
直接用登录名调用就可以了
负载均衡在什么情况下使用负载平衡
一、访问量太大,一个服务支撑不住访问量。
二、容错率要求高,提供的服务不能出现错误或自动关闭,整个系统不能使用。
关闭此服务后,整个业务将无法使用。
负载平衡是指当其中一个服务锁定时,自动切换到相同的可用服务。
server : port :3001 eureka : instance : prefer IP address 3360 true client 3360 serviceurl 3360 default zone 3:3358本地hone one 已注册eureka spring : application : name : user server : port :3003 eureka : instance : prefer IP adddress 3360 true Clint :http://localhost :3000/eureka # # eureka spring : application : name : user即使在此注册,只要更改name即可成为user
用户下面有两项服务。 调用方法是一样的。
本章主要论述分散和负荷分散的理论。 在这里,我只讨论了服务负载平衡,如果Eureka挂起了会怎么样呢? 因此,我将介绍Eureka的集群。