做网站路径,福州短视频seo公司,网站开发的流行架构,用织梦做网站有钱途吗文章目录 #x1f343;前言#x1f38d;解决方案#x1f6a9;关于注册中⼼#x1f6a9;CAP理论#x1f6a9;常见的注册中心 #x1f384;Eureka#x1f6a9;搭建 Eureka Server#x1f388;创建Eureka-server ⼦模块#x1f388;引入依赖#x1f388;项目构建插件前言解决方案关于注册中⼼CAP理论常见的注册中心 Eureka搭建 Eureka Server创建Eureka-server ⼦模块引入依赖项目构建插件书写启动类编写配置文件启动验证服务 服务注册引⼊eureka-client依赖完善配置文件启动服务 服务发现引入依赖完善配置文件远程调用启动服务 ⭕总结 前言
在我们前面进行搭建微服务在进行远程调用时进行远程调用的时候我们发现我们的远程调用URL是写死的。
String url http://127.0.0.1:9090/product/ orderInfo.getProductId();当更换机器或者新增机器时这个URL就需要跟着变更就需要去通知所有的相关服务去修改。随之⽽来的就是各个项⽬的配置⽂件反复更新各个项⽬的频繁部署。这种没有具体意义但⼜不得不做的⼯作会让⼈⾮常痛苦
解决方案
试想⽣活中的场景 我们⽣活中避免不了和各个机构(医院学校政府部⻔等)打交道就需要保存各个机构的电话号码。如果机构换了电话号码就需要通知各个使⽤⽅但是这些机构的使⽤⽅群体是巨⼤的没办法做到⼀⼀通知怎么处理呢? 机构电话如果发⽣变化通知114。⽤⼾需要联系机构时先打114查询电话然后再联系各个机构
114查号台的作⽤主要有两个:
号码注册服务⽅把电话上报给114号码查询使⽤⽅通过114可以查到对应的号码 同样的微服务开发时也可以采⽤类似的⽅案。 服务启动/变更时向注册中⼼报道。注册中⼼记录应⽤和IP的关系。 调⽤⽅调⽤时先去注册中⼼获取服务⽅的IP再去服务⽅进⾏调⽤
关于注册中⼼
在最初的架构体系中集群的概念还不那么流⾏且机器数量也⽐较少此时直接使⽤DNSNginx就可以满⾜⼏乎所有服务的发现。相关的注册信息直接配置在Nginx。但是随着微服务的流⾏与流量的激增,
机器规模逐渐变⼤并且机器会有频繁的上下线⾏为这种时候需要运维⼿动地去维护这个配置信息是⼀个很⿇烦的操作。
所以开发者们开始希望有这么⼀个东西它能维护⼀个服务列表哪个机器上线了哪个机器宕机了这些信息都会⾃动更新到服务列表上客⼾端拿到这个列表直接进⾏服务调⽤即可。这个就是注册中⼼
注册中⼼主要有三种⻆⾊
服务提供者(Server)⼀次业务中, 被其它微服务调⽤的服务, 也就是提供接给其它微服务服务消费者(Client)⼀次业务中, 调⽤其它微服务的服务. 也就是调⽤其它微服务提供的接服务注册中⼼(Registry): ⽤于保存Server 的注册信息, 当Server 节点发⽣变更时Registry会同步变更. 服务与注册中⼼使⽤⼀定机制通信, 如果注册中⼼与某服务⻓时间⽆法通信, 就会注销该实例.
他们之间的关系以及⼯作内容, 可以通过两个概念来描述:
服务注册服务提供者在启动时, 向 Registry 注册⾃⾝服务, 并向 Registry 定期发送⼼跳汇报存活状 态.服务发现 服务消费者从注册中⼼查询服务提供者的地址并通过该地址调⽤服务提供者的接⼝. 服务 发现的⼀个重要作⽤就是提供给服务消费者⼀个可⽤的服务列表 CAP理论
谈到注册中⼼就避不开CAP理论。
CAP 理论是分布式系统设计中最基础也是最为关键的理论理论大致如下 ⼀致性(Consistency) CAP理论中的⼀致性, 指的是强⼀致性。所有节点在同⼀时间具有相同的数据可⽤性(Availability) 保证每个请求都有响应(响应结果可能不对)分区容错性(Partition Tolerance) 当出现⽹络分区后系统仍然能够对外提供服务
CAP 理论告诉我们: ⼀个分布式系统不可能同时满⾜数据⼀致性, 服务可⽤性和分区容错性这三个基本 需求, 最多只能同时满⾜其中的两个.
在分布式系统中, 系统间的⽹络不能100%保证健康, 服务⼜必须对外保证服务. 因此Partition Tolerance是不可避免. 那就只能在C和A中选择⼀个. 也就是CP或者AP架构
两个架构的区别在于
CP架构: 为了保证分布式系统对外的数据⼀致性, 于是选择不返回任何数据AP架构: 为了保证分布式系统的可⽤性, 节点2返回V0版本的数据(即使这个数据不正确)
常见的注册中心
Zookeeper Zookeeper的官⽅并没有说它是⼀个注册中⼼,但是国内Java体系,⼤部分的集群环境都是依赖 Zookeeper来完成注册中⼼的功能 Eureka Eureka是Netflix开发的基于REST的服务发现框架主要⽤于服务注册管理负载均衡和服务故障 转移. 官⽅声明在Eureka2.0版本停⽌维护不建议使⽤。但是Eureka是SpringCloud服务注册/发现的默认实现所以⽬前还是有很多公司在使⽤ Nacos Nacos是Spring Cloud Alibaba架构中重要的组件, 除了服务注册, 服务发现功能之外, Nacos还⽀持配置管理,流量管理, DNS, 动态DNS等多种特性. 三者所选择的 CAP 理论也不一样
ZookeeperEurekaNacosCAP理论CPAPCP或AP默认AP
本次博主主要介绍 Eureka 的使用
Eureka
Eureka是Netflix OSS套件中关于服务注册和发现的解决⽅案
Eureka主要分为两个部分
Eureka Server: 作为注册中⼼Server端, 向微服务应⽤程序提供服务注册, 发现, 健康检查等能⼒Eureka Client: 服务提供者, 服务启动时, 会向Eureka Server 注册⾃⼰的信息(IP,端⼝,服务信息等),Eureka Server 会存储这些信息
注意以下的演示是基于【Spring Cloud】微服务的简单搭建 的基础进行搭建的。不了解的小伙伴可以先去看一下博主所写的微服务的简单搭建。
关于Eureka的使用, 主要包含以下三个部分:
搭建Eureka Server将order-service, product-service 都注册到Eurekaorder-service远程调⽤时, 从Eureka中获取product-service的服务列表, 然后进⾏交互
搭建 Eureka Server
Eureka-server 是⼀个独⽴的微服务
创建Eureka-server ⼦模块 引入依赖 依赖如下
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId
/dependency项目构建插件
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build书写启动类 代码如下
EnableEurekaServer
SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class,args);}
}编写配置文件 配置如下
server:port: 10010
spring:application:name: eureka-serve
eureka:instance:hostname: localhostclient:fetch-registry: false # 表⽰是否从Eureka Server获取注册信息,默认为true.因为这是⼀个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这⾥设置为falseregister-with-eureka: false # 表⽰是否将⾃⼰注册到Eureka Server,默认为true.由于当前应⽤就是Eureka Server,故⽽设置为false.service-url:
# 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/启动验证服务
启动服务, 访问注册中⼼: http://127.0.0.1:10010/
出现以下界面说明启动成功了
服务注册
接下来我们把product-service 注册到eureka-server中
引⼊eureka-client依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId
/dependency完善配置文件
添加服务名称和eureka地址
spring:application:name: product-service
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka启动服务
刷新我们的注册中心就可以看到以下场景
可以看到product-service已经注册到 eureka上了
服务发现
接下来我们修改order-service, 在远程调⽤时, 从eureka-server拉取product-service的服务信息, 实现 服务发现
引入依赖
服务注册和服务发现都封装在eureka-client依赖中, 所以服务发现时, 也是引⼊eureka-client依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId
/dependency完善配置文件
服务发现也需要知道eureka地址,因此配置内容依然与服务注册⼀致都是配置eureka信息
spring:application:name: order-service
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka远程调用
远程调⽤时,我们需要从eureka-server中获取product-service的列表(可能存在多个服务),并选择其中 ⼀个进⾏调⽤
Slf4j
Service
public class OrderService {Autowiredprivate OrderMapper orderMapper;Autowiredprivate RestTemplate restTemplate;Resourceprivate DiscoveryClient discoveryClient;public OrderInfo selectAll(Integer userid) {OrderInfo orderInfo orderMapper.selectAll(userid);//String url http://127.0.0.1:9999/product/ orderInfo.getProductId();ListServiceInstance instances discoveryClient.getInstances(product-service);//服务可能有多个, 获取第⼀个System.out.println(instances instances.size());EurekaServiceInstance instance (EurekaServiceInstance)instances.get(0);log.info(instance.getInstanceId());//拼接urlString url instance.getUri()/product/ orderInfo.getProductId();ProductInfo productInfo restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}启动服务
刷新注册中心。我们可以看到order-service已经注册到eureka上了 访问order-service的相应接口我们也可以看到调用成功。
⭕总结
关于《【Spring Cloud】 使用Eureka实现服务注册与服务发现》就讲解到这儿感谢大家的支持欢迎各位留言交流以及批评指正如果文章对您有帮助或者觉得作者写的还不错可以点一下关注点赞收藏支持一下 文章转载自: http://www.morning.npxht.cn.gov.cn.npxht.cn http://www.morning.rqwmt.cn.gov.cn.rqwmt.cn http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn http://www.morning.fynkt.cn.gov.cn.fynkt.cn http://www.morning.twmp.cn.gov.cn.twmp.cn http://www.morning.byshd.cn.gov.cn.byshd.cn http://www.morning.mnwsy.cn.gov.cn.mnwsy.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.drspc.cn.gov.cn.drspc.cn http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn http://www.morning.pypbz.cn.gov.cn.pypbz.cn http://www.morning.csjps.cn.gov.cn.csjps.cn http://www.morning.djlxz.cn.gov.cn.djlxz.cn http://www.morning.zckhn.cn.gov.cn.zckhn.cn http://www.morning.zlrrj.cn.gov.cn.zlrrj.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.jzykq.cn.gov.cn.jzykq.cn http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.mdfxn.cn.gov.cn.mdfxn.cn http://www.morning.rshs.cn.gov.cn.rshs.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn http://www.morning.plgbh.cn.gov.cn.plgbh.cn http://www.morning.plcyq.cn.gov.cn.plcyq.cn http://www.morning.zfcfk.cn.gov.cn.zfcfk.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.wfyqn.cn.gov.cn.wfyqn.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.rbylq.cn.gov.cn.rbylq.cn http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.pswzc.cn.gov.cn.pswzc.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.xysxj.com.gov.cn.xysxj.com http://www.morning.llxqj.cn.gov.cn.llxqj.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn http://www.morning.mspkz.cn.gov.cn.mspkz.cn http://www.morning.gtjkh.cn.gov.cn.gtjkh.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.kdjtt.cn.gov.cn.kdjtt.cn http://www.morning.dgsx.cn.gov.cn.dgsx.cn http://www.morning.tkyry.cn.gov.cn.tkyry.cn http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.xyrss.cn.gov.cn.xyrss.cn http://www.morning.qlck.cn.gov.cn.qlck.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn http://www.morning.nmwgd.cn.gov.cn.nmwgd.cn http://www.morning.srsln.cn.gov.cn.srsln.cn http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn http://www.morning.nmfml.cn.gov.cn.nmfml.cn http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn http://www.morning.llgpk.cn.gov.cn.llgpk.cn http://www.morning.qcslh.cn.gov.cn.qcslh.cn http://www.morning.rxwnc.cn.gov.cn.rxwnc.cn http://www.morning.rcntx.cn.gov.cn.rcntx.cn http://www.morning.jlqn.cn.gov.cn.jlqn.cn http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.klltg.cn.gov.cn.klltg.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.qsszq.cn.gov.cn.qsszq.cn