# pace-cloud **Repository Path**: ylbs/coreCloud ## Basic Information - **Project Name**: pace-cloud - **Description**: cloud - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-12-25 - **Last Updated**: 2021-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pace-cloud #### ZK,EUREKA,CONSUL异同点 - ZK CP 客户端 可配支持服务监控检测 - EUREKA AP 提供HTTP接口 支持 - CONSUL CP 提供HTTP接口/DNS 支持 #### CAP > 分布式系统必须要保障分区容错性,目前类似淘宝、京东等电商大部分用的都是AP,容许部分数据不一致,采用最终一致性原则; CA这种系统如mysql,只要数据挂了则系统就挂了; - C consistency :强一致性 - A availability :可用性 - P partition tolerance :分区容错性 #### AP架构 > 分布式系统中,为了保障可用性,允许出现数据不一致的情况,以保障系统的高可用。类型京东、淘宝等电商网站 #### CP架构 > 当网络分区出现后,为了保证数据的一致性,就必须拒绝请求,否则无法保证一致性;保障一致性和分区容错性,违背A可用性 #### Ribbon > 一句话:负载均衡+RestTemplate(远程调用)。主要提供客户端的软件负载均衡算法和服务调用。ribbon提供一系列完善的配置项如连接超时、重试等机制,简单的说 就是在配置文件中列出Load Balancer后面所有的机器。ribbon会自动帮你基于某种规则,如轮询,随机连接等方式去请求这些服务。 即就是提供了一些负载均衡的算法,来帮助如何选择哪台服务器提供服务。 ``` java LB负载均衡(Load Balance)是什么 简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA (高可用)。 常见的负载均衡有软件Nginx, LVS, 硬件F5等。 Ribbon本地负载均衡客户端VS Nginx服务端负载均衡区别 Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。 Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到VM本地,从而在本地实现RPC远 程服务调用技术。 ``` - 集中式的LB > 集中式LB 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策 略转发至服务的提供方; . - 进程内的LB > 进程内LB 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。 Ribbon就属于进程内LB,它只是一个类库, 集成于消费方进程,消费方通过它来获取到服务提供方的地址。 #### OpenFgign 1. 微服务之间的远程调用,主要用于服务的消费端,用于调用。 2. Feign是一个声明式WebService客户端。 使用Feign能让编写Web Service客户端更加简单。 3. 它的使用方法是定义一个服务接口然后在上面添加注解。 4. Feign也支持可拔插式的编码器和解码器。 5. Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。 6. Feign可以与Eureka和Ribbon组合使用以支持负载均衡 ##### Feign能干什么 > Feign旨在使编写Java Http客户端变得更容易。 前面在使用Ribbon+ RestTemplate时,利用RestTemplate对http请求的封装处理, 形成了-套模版化的调用方法。但是在实际开发 中,由于对服务依赖的调用可能不止一处, 往往一个 接口会被多处调用,所以通常都会针对每个微服务自行封装- 些客户端类来包装 这些依赖服务的调用。所以,Feign在此基础上做了进一步封装, 由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下 我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口 上面标注Mapper注解,现在是一个微服务接口. 上面标注一个 Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量。 ##### Feign集成了Ribbon > 利用Ribbon维护了Payment的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义 服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用 ![Feign和OpenFeign的区别](./cloud-pms/src/main/resources/1.png) #### Hystrix 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### Zuul #### GateWay #### Nacos #### Sentinel #### Bus #### Config >该项目依赖ZK,kafka需要先启动ZK、kafka .\bin\windows\kafka-server-start.bat .\config\server.properties启动kafka