中国建设银行网站首页怎么销户,子域名ip查询大全,c++编程软件,wordpress插件文件夹文章目录Eureka注册中心一、服务注册与发现1.1 依赖导入①父工程 SpringCloud 版本管理②Eureka 服务端依赖③Eureka 客户端依赖1.2 服务注册①创建 Eureka 服务端的主类②设置 Eureka 服务端的配置文件③设置 Eureka 客户端的配置文件④关闭自我保护机制1.3 服务发现①远程调用… 文章目录Eureka注册中心一、服务注册与发现1.1 依赖导入①父工程 SpringCloud 版本管理②Eureka 服务端依赖③Eureka 客户端依赖1.2 服务注册①创建 Eureka 服务端的主类②设置 Eureka 服务端的配置文件③设置 Eureka 客户端的配置文件④关闭自我保护机制1.3 服务发现①远程调用②负载均衡二、注册中心高可用: 搭建 Eureka 集群①服务端创建两个配置文件②修改本地 hosts③开启两个 EurekaServer 实例④修改Eureka客户端的配置文件提示以下是本篇文章正文内容SpringCloud 系列学习将会持续更新 Eureka注册中心
官方文档https://docs.spring.io/spring-cloud-netflix/docs/current/reference/html/
前面我们了解了如何对单体应用进行拆分并且也学习了如何进行服务之间的相互调用但是存在一个问题就是虽然服务拆分完成但是没有一个比较合理的管理机制如果单纯只是这样编写在部署和维护起来肯定是很麻烦的。 可以想象一下如果某一天这些微服务的端口或是地址大规模地发生改变我们就不得不将服务之间的调用路径大规模的同步进行修改这是多么可怕的事情。我们需要削弱这种服务之间的强关联性因此我们需要一个集中管理微服务的平台这时就要借助我们这一部分的主角了。
Eureka 能够自动注册并发现微服务然后对服务的状态、信息进行集中管理这样当我们需要获取其他服务的信息时我们只需要向 Eureka 进行查询就可以了。 像这样的话服务之间的强关联性就会被进一步削弱。
一、服务注册与发现
1.1 依赖导入
①父工程 SpringCloud 版本管理
我们先在父工程中添加一下 SpringCloud 的依赖 进行版本管理这里选用 2021.0.1 版本。 官网查看https://spring.io/projects/spring-cloud#learn
dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.1/versiontypepom/typescopeimport/scope/dependency/dependencies
/dependencyManagement②Eureka 服务端依赖
现在我们就来搭建一个 Eureka 服务器只需要创建一个新的 Maven 项目即可eureka-server 接着我们为Eureka服务端添加 Eureka 依赖
dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency
/dependencies③Eureka 客户端依赖
我们的三个微服务客户端首先还是需要导入 Eureka 依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId
/dependency回到目录…
1.2 服务注册
①创建 Eureka 服务端的主类
需要使用EnableEurekaServer注解
EnableEurekaServer
SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}②设置 Eureka 服务端的配置文件
server:port: 8888
eureka:instance:hostname: localhost # eureka服务端的实例名称client:# 是否在服务中心注册自己, 默认为 trueregister-with-eureka: false# false表示自己就是注册中心我的职责就是维护服务实例并不需要去检索服务fetch-registry: falseservice-url:# 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka好了现在差不多可以启动了启动完成后直接localhost:8888即可访问 Eureka 的管理后台
③设置 Eureka 客户端的配置文件
spring:application:name: userservice
eureka:client:service-url:defaultZone: http://localhost:8888/eurekaOK无需在启动类添加注解直接启动就可以了然后打开 Eureka 的服务管理页面可以看到我们刚刚开启的服务 当我们的服务启动之后会每隔一段时间跟 Eureka 发送一次心跳包这样 Eureka 就能够感知到我们的服务是否处于正常运行状态。 ④关闭自我保护机制 Eureka 的自我保护机制指的是当网络发生问题导致服务访问失败时eureka 注册中心不会马上把应用剔除继续保留一段时间。但这样对我们实际开发来说需要频繁重启应用的时候不方便测试需要将自我保护机制关闭。
Ⅰ 修改 eureka 服务端
eureka:server:# 关闭自我保护机制保证不可用服务被及时剔除enable-self-preservation: false# 心跳检测时间设置成2秒eviction-interval-timer-in-ms: 2000Ⅱ 修改 eureka 客户端
eureka:instance:# eureka客户端向服务端发送心跳的时间间隔单位是秒默认30秒lease-renewal-interval-in-seconds: 1# eureka服务端在收到最后一次心跳后等待时间的上限单位为秒默认90秒超时将会剔除服务lease-expiration-duration-in-seconds: 2配置完成之后经测试可体验到在服务关闭后非常快速地剔除应用。
回到目录…
1.3 服务发现
①远程调用
那么现在我们怎么实现服务发现呢 原本的微服务远程调用那么就必须要知道其他服务的地址
RestTemplate template new RestTemplate();
User user template.getForObject(http://localhost:8082/user/uid, User.class);修改后的微服务远程调用
a. 我们手动将 RestTemplate 声明为一个 Bean 注册到 Ioc 容器中然后添加LoadBalanced注解这样 Eureka 就会对服务的调用进行自动发现并提供负载均衡
Configuration
public class BeanConfiguration {BeanLoadBalanced // 负载均衡public RestTemplate getRestTemplate() {return new RestTemplate();}
}b. 而现在有了 Eureka 之后我们只需要用服务名称对其查询
Service
public class BorrowServiceImpl implements BorrowService {Resourceprivate BorrowMapper borrowMapper;Resource// RestTemplate 支持多种方式的远程调用private RestTemplate template;Overridepublic UserBorrowView getBorrowViewByUid(int uid) {// 现在拿到借阅关联信息了怎么调用其他服务获取信息呢ListBorrow borrowList borrowMapper.getBorrowsByUid(uid);// 这里不用再写IP直接写服务名称 userserviceUser user this.template.getForObject(http://userservice/user/uid, User.class);// 这里通过调用 getForObject 来请求其他服务并将结果自动进行封装ListBook bookList borrowList.stream().map(b - template.getForObject(http://bookservice/book/b.getBid(), Book.class)).collect(Collectors.toList());return new UserBorrowView(user, bookList);}
}现在我们就可以正常调用了
回到目录…
②负载均衡
同一个服务器多开实例设置不同的端口
a. Edit Configuration… - 选中 UserApplication - 新建目录 Move into new folder - 在该目录下新建 Spring Boot - 进行如下配置 b. 启动所有实例 c. 此时我们在 Eureka 后台也可以看到新增的实例 如何观察 Eureka 对我们多实例的负载均衡
a. 我们有2个 UserApplication 的实例可以在控制层的某个服务调用代码中添加日志打印当前实例的IP:PORT
RestController
Slf4j
public class UserController {Resourceprivate UserService userService;ResourceEnvironment environment; // org.springframework.core.env.EnvironmentGetMapping(/user/{uid})public User findUserById(PathVariable(uid) int uid) throws UnknownHostException {String hostIp InetAddress.getLocalHost().getHostAddress();String port environment.getProperty(server.port);log.info(hostIp : port 的findUserById()被访问了);return userService.getUserById(uid);}
}b. 然后重新启动。我们多次访问http://localhost:8082/borrow/3其中 BorrowService 就会进行远程调用 UserService这时我们通过查看 UserApplication-1 和 UserApplication-2 的控制台日志就可以发现它们是被轮循调用的。 这样服务自动发现以及简单的负载均衡就实现完成了并且如果某个微服务挂掉了只要存在其他同样的微服务实例在运行那么就不会导致整个微服务不可用极大地保证了安全性。
回到目录…
二、注册中心高可用: 搭建 Eureka 集群
各位可否想过这样的一个问题虽然Eureka能够实现服务注册和发现但是如果Eureka服务器崩溃了岂不是所有需要用到服务发现的微服务就GG了
为了避免这种问题我们也可以像上面那样搭建Eureka集群存在多个Eureka服务器这样就算挂掉其中一个其他的也还在正常运行就不会使得服务注册与发现不可用。当然要是物理黑客直接炸了整个机房那还是算了吧。 我们来看看如何搭建Eureka集群这里由于机器配置不高就搭建两个Eureka服务器组成集群。
①服务端创建两个配置文件
application-1.yml
server:port: 8801
spring:application:name: eurekaserver # 所有eureak的这个值要设置为同一个
eureka:instance:# 由于不支持多个localhost的Eureka服务器但是又只有本地测试环境所以就只能自定义主机名称了# 如果报错主机名称改为 eureka01hostname: eureka01client:# false表示自己就是注册中心fetch-registry: falseservice-url:# 注意这里填写其他 Eureka 服务器的地址不用写自己的defaultZone: http://eureka02:8802/eurekaapplication-2.yml
server:port: 8802
spring:application:name: eurekaserver
eureka:instance:hostname: eureka02client:fetch-registry: falseservice-url:defaultZone: http://eureka01:8801/eureka②修改本地 hosts
这里由于我们修改成自定义的地址需要在 hosts 文件中将其解析到 127.0.0.1 才能回到 localhost。 Linux 下文件路径为 /etc/hosts Windows 下文件路径为 C:\Windows\system32\drivers\etc\hosts需要获取权限比较麻烦可以利用火绒安全软件直接修改 Windows系统修改hosts后需要刷新DNS缓存使之生效在cmd命令行中执行命令ipconfig/flushdns
回到目录…
③开启两个 EurekaServer 实例
对创建的两个配置文件分别添加启动配置直接使用-Dspring.profiles.active指定启用的配置文件即可
接着启动这两个注册中心这两个 Eureka 管理页面都可以被访问我们访问其中一个 可以看到下方replicas中已经包含了另一个Eureka服务器的地址并且是可用状态。
回到目录…
④修改Eureka客户端的配置文件
eureka:client:service-url:# 将两个Eureka的地址都加入这样就算有一个Eureka挂掉也能完成注册defaultZone: http://localhost:8801/eureka, http://localhost:8802/eureka可以看到服务全部成功注册并且两个 Eureka 服务端都显示为已注册
接着我们模拟一下将其中一个Eureka服务器关闭掉可以看到它会直接变成不可用状态 当然如果这个时候我们重启刚刚关闭的Eureka服务器会自动同步其他Eureka服务器的数据。
回到目录… 总结: 提示这里对文章进行总结 本文是对SpringCloud的学习学习了它的组件Eureka注册中心包括服务的注册与发现高可用(Eureka集群的搭建)。之后的学习内容将持续更新 文章转载自: http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.mgmqf.cn.gov.cn.mgmqf.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.lhgkr.cn.gov.cn.lhgkr.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.skql.cn.gov.cn.skql.cn http://www.morning.fpxyy.cn.gov.cn.fpxyy.cn http://www.morning.ljbch.cn.gov.cn.ljbch.cn http://www.morning.tzpqc.cn.gov.cn.tzpqc.cn http://www.morning.xrct.cn.gov.cn.xrct.cn http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn http://www.morning.sqxr.cn.gov.cn.sqxr.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn http://www.morning.cfpq.cn.gov.cn.cfpq.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.mjats.com.gov.cn.mjats.com http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn http://www.morning.fxygn.cn.gov.cn.fxygn.cn http://www.morning.yrrnx.cn.gov.cn.yrrnx.cn http://www.morning.cfybl.cn.gov.cn.cfybl.cn http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn http://www.morning.gctgc.cn.gov.cn.gctgc.cn http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn http://www.morning.rhmpk.cn.gov.cn.rhmpk.cn http://www.morning.msgnx.cn.gov.cn.msgnx.cn http://www.morning.zwmjq.cn.gov.cn.zwmjq.cn http://www.morning.pggkr.cn.gov.cn.pggkr.cn http://www.morning.mkbc.cn.gov.cn.mkbc.cn http://www.morning.wqwbj.cn.gov.cn.wqwbj.cn http://www.morning.xesrd.com.gov.cn.xesrd.com http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.ddjp.cn.gov.cn.ddjp.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.ntqgz.cn.gov.cn.ntqgz.cn http://www.morning.kpbn.cn.gov.cn.kpbn.cn http://www.morning.ttfh.cn.gov.cn.ttfh.cn http://www.morning.phechi.com.gov.cn.phechi.com http://www.morning.fcftj.cn.gov.cn.fcftj.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.xyrw.cn.gov.cn.xyrw.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.tkflb.cn.gov.cn.tkflb.cn http://www.morning.lfgql.cn.gov.cn.lfgql.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.tdcql.cn.gov.cn.tdcql.cn http://www.morning.zdnrb.cn.gov.cn.zdnrb.cn http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.rwcw.cn.gov.cn.rwcw.cn http://www.morning.tqgmd.cn.gov.cn.tqgmd.cn http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.flqbg.cn.gov.cn.flqbg.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.njnqn.cn.gov.cn.njnqn.cn http://www.morning.ltffk.cn.gov.cn.ltffk.cn http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.yskhj.cn.gov.cn.yskhj.cn http://www.morning.bflwj.cn.gov.cn.bflwj.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.ttfh.cn.gov.cn.ttfh.cn http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn http://www.morning.bjjrtcsl.com.gov.cn.bjjrtcsl.com http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn http://www.morning.rttp.cn.gov.cn.rttp.cn