请选择 进入手机版 | 继续访问电脑版

Spring Cloud快速入门学习

[复制链接]
甜蜜的负担 发表于 2021-1-2 17:37:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
早些年常见的会合式系统和分布式系统:
  会合式系统也叫单体应用,就是把所有应用的步伐、功能、模块都会合在在一个项目当中,摆设在一台服务器上对外使用
  分布式系统就是把所有的步伐、功能拆分成差别的子系统,摆设在多台差别的服务器上,这些子系统相互协作对外提供服务,对用户而言他们不知道配景是多个子系统和多台服务器在服务,使用上和会合系统一样。
会合系统和分布式系统是相反的两个概念,他们的区别体现在“合”与“分”。
微服务优缺点:

  微服务架构是将系统当中的差别模块拆分成多个差别的服务,这些服务举行独立的开辟摆设,每个服务都运行在自己的历程内,这样每个服务的更新都不会影响到其他服务的运行。
  每个服务器都是单独运行摆设的,我们可以更准确的监控每个服务的资源消耗情况,举行容量评估通过压力测试,也很容易发个各个服务器之间的瓶颈所在。
  由于每个服务器都是独立开辟,项目的开辟相对于比力轻便淘汰代码辩论,代码的冗余,逻辑处理处罚更加清晰,让后续的维护更加容易,
  微服务可以使用差别的编程语言举行开辟(各个独立的服务器之间使用的是基于http的JSON作为通讯协作的底子)
缺点:
  微服务架构增加了系统的维护、摆设的难度,导致一些功能模块大概代码无法复用
  随着系统使用率的日益增长,微服务在一定水平上也会导致系统变的越来越负责,增加了集成测试的难度
  随着服务的增多,数据的一致性问题,服务之间的通讯资本都显着突出。
Spring Cloud 的整体架构

  1. Service Provider: 袒露服务的服务提供方。Service Consumer:调用远程服务的服务消费方。EureKa Server: 服务注册中心和服务发现中心。
复制代码
Spring Cloud项目的开始创建:

首先查察Spring Cloud官网如下形貌:
  将spring cloud加在已有的sping项目当中,如果你有存在的spring项目你想添加spring cloud在这个项目,首先应该确认使用的spring cloud版本,你在项目当中使用的版本取决去spring boot的版本。
  下表概述了spring cloud版本对应spring boot的版本。

创建Spring Cloud基于Spring Boot的项目:

两种方式创建项目:
  一、直接创建Spring Boot项目导入pom坐标
  二、创建平凡的java项目导入所需要的pom坐标
我们此次用的是第二种方式:
创建平凡项目选择JAVA版本

输入GroupId和Artifactid不继承父工程

创建完成之后所需要导入的POM坐标:
  1.                     org.springframework.boot        spring-boot-starter-parent        2.0.3.RELEASE                                                 org.springframework.boot            spring-boot-starter-web                                    org.springframework.boot            spring-boot-starter-test            test                                    org.springframework.cloud            spring-cloud-starter-netflix-eureka-client                                    org.springframework.cloud            spring-cloud-starter-netflix-eureka-server                                                        org.springframework.cloud                spring-cloud-dependencies                Finchley.RELEASE                pom                import                                                    spring-milestones            Spring Milestones            https://repo.spring.io/libs-milestone/                            false                        
复制代码
提供者(provider)项目入口类和properties设置文件

入口类:
  1. package com.nj.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class ApplicationProvider {    public static void main(String[] args) {        SpringApplication.run(ApplicationProvider.class, args);    }}
复制代码
设置文件application.properties
  1. #spring boot内嵌tomcat改动端口server.port=9100#设置服务名称和注册中心所在spring.application.name=01springcloudprovidereureka.client.service-url.defaultZone=http://locathost:8761/eureka#测试关闭自我掩护机制,包管不可用服务被踢出eureka.server.enable-self-preservation=false#每隔断5秒向服务端发送一次心跳,证明自己仍然存活eureka.instance.lease-renewal-interval-in-seconds=5#告诉服务端如果10S之内没有发送心跳就代表故障了,将我踢出eureka.instance.lease-expiration-duration-in-seconds=10
复制代码
消费者(customer)项目入口类和properties设置文件

入口类:
  1. package com.nj.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class ApplicationCustomer {    public static void main(String[] args) {        SpringApplication.run(ApplicationCustomer.class, args);    }}
复制代码
设置文件application.properties
  1. server.port=8082#设置服务名称和注册中心spring.application.name=02springcloudservicecustomeureka.client.service-url.defaultZone=http://erueka8761:8761/eureka,http://erueka8762:8762/eureka#测试关闭自我掩护机制,包管不可用服务被踢出eureka.server.enable-self-preservation=false#每隔断5秒向服务端发送一次心跳,证明自己仍然存活eureka.instance.lease-renewal-interval-in-seconds=5#告诉服务端如果10S之内没有发送心跳就代表故障了,将我踢出eureka.instance.lease-expiration-duration-in-seconds=10
复制代码
ribbo负载平衡设置:
  1. package com.nj.springcloud.configer;import com.netflix.loadbalancer.IRule;import com.netflix.loadbalancer.RandomRule;import com.netflix.loadbalancer.RetryRule;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;/** * @author  * @Description:  * @date 2020/12/21 21:40 */@Configuration        //加@Configuration注解就相当于spring当中的spring-applicationContext.xml文件public class SpringConfig {    /**     * Ribbon负载平衡,默认是轮询     *      * 在Spring Cloud当中,Ribbon主要与RestTemplate对象共同来使用,     * Ribbon会自动化设置RestTemplate对象,     * 通过@LoadBalabced注解开启RestTempalte对象调用时的负载平衡     * @return        Ribbon默认负载平衡模式为轮询RoundRobinRule     */    @LoadBalanced        //开启RestTempalte对象调用时的负载平衡,开启客户端负载平衡    @Bean        //@bean就相当于设置    public RestTemplate restTemplate(){        return new RestTemplate();    }//    @Bean    public IRule iRule(){        //随机负载平衡模式//        return new RandomRule();        //RetyRule先按照轮询计谋分发,如果分发的服务不能访问,则在指定时间举行重试分发其他可用服务        return new RetryRule();    }}
复制代码
注册中心(server)项目入口类和properties设置文件

入口类:
  1. package com.nj.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class ApplicationEurekaServer {    public static void main(String[] args) {        SpringApplication.run(ApplicationEurekaServer.class, args);    }}
复制代码
设置文件application.properties
  1. #内置tomcat端口server.port=8083#设置注册中心hostnameeureka.instance.hostname=localhost#由于现在创建的应用是一个服务注册中心,而不是平凡的应用。默认情况下这个应用会向注册中心(及是自己)注册它自己#设置为false体现克制这种自己向自己注册的行为eureka.client.register-with-eureka=false#体现不去检索其他的服务,因为注册中心自己的职责就是维护服务实例,它不需要去检索其他的服务eureka.client.fetch-registry=false#指定注册中心位置eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
复制代码
以上就是一个Spring Cloud简单相识入门小测试完结!!!
Eureka与Zookpeer的比力

著名的CAP理论指出一个分布式系统不大概同时满意C(一致性)A(可用性)和P(分区容错性)。
  由于分区容错性是分布式系统当中必须要包管的,因为我们只能在A和C之间举行选择,Zookeeper包管的是CP,Eureka包管的是AP。
Zookeeper包管的是CP:
  在Zookeeper当中,当master节点因为网络故障和其他节点失去接洽时,剩余的节点会重新举行Leader选择,问题在于选择Leader需要一定的时间,而且选举期间整个Zookeeper集群是不可用的,这就导致服务器在选举注册期间瘫痪。在云服务器上因网络问题使得Zookeeper集群失去master节点是大概率时间,虽然服务最终可以规复,但是最终在选举期间会导致服务不可用是难以忍受的。
Eureka包管的是AP:
  Eureka优先包管可用性,Eureka每个几点是同等的,挂掉几个节点不会影响正常的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或发现毗连失败,则会自动切换到其他节点,只要有一台Eureka服务端还在就能包管注册服务的可用(包管可用性),只不外查到的信息大概不是最新的(不包管强一致性)
eureka自我掩护机制:

来源:https://blog.csdn.net/nan1996jiang/article/details/111469762
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )