当前位置: 首页 > news >正文

济源市网站建设_网站建设公司_Photoshop_seo优化

网站建设实力宣传海报,lnmp wordpress 主题,公司网站怎么自己制作,开发公司移交物业清单一、Eureka简介本文中所有代码都会上传到git上#xff0c;请放心浏览 项目git地址#xff1a;https://github.com/839022478/Spring-Cloud在传统应用中#xff0c;组件之间的调用#xff0c;通过有规范的约束的接口来实现#xff0c;从而实现不同模块间良好的协作。但是被… 一、Eureka简介本文中所有代码都会上传到git上请放心浏览 项目git地址https://github.com/839022478/Spring-Cloud在传统应用中组件之间的调用通过有规范的约束的接口来实现从而实现不同模块间良好的协作。但是被拆分成微服务后每个微服务实例的网络地址都可能动态变化数量也会变化使得原来硬编码的地址失去了作用。需要一个中心化的组件来进行服务的登记和管理为了解决上面的问题于是出现了服务治理就是管理所有的服务信息和状态也就是我们所说的注册中心1.1 注册中心比如我们去做火车或者汽车需要去买票乘车只看我们有没有票(有没有服务)有就去买票(获取注册列表)然后乘车(调用)不用关心到底有多少车在运行流程图使用注册中心我们不需要关心有多少提供方只管去调用就可以了那么注册中心有哪些呢注册中心EurekaNacosConsulZookeeper本文中讲解的是比较火热的Spring Cloud微服务下的EurekaEureka是Netflix开发的服务发现框架是一个RESTful风格的服务是一个用于服务发现和注册的基础组件是搭建Spring Cloud微服务的前提之一它屏蔽了Server和client的交互细节使得开发者将精力放到业务上。服务注册与发现主要包括两个部分服务端(EurekaServer)和客户端(EurekaClient)服务端(Eureka Server) 一个公共服务为Client提供服务注册和发现的功能维护注册到自身的Client的相关信息同时提供接口给Client获取注册表中其他服务的信息使得动态变化的Client能够进行服务间的相互调用。客户端(Eureka Client) Client将自己的服务信息通过一定的方式登记到Server上并在正常范围内维护自己信息一致性方便其他服务发现自己同时可以通过Server获取到自己依赖的其他服务信息完成服务调用还内置了负载均衡器用来进行基本的负载均衡Eureka GIt官网https://github.com/Netflix/Eureka1.3 服务注册与发现服务注册与发现关系图1.2 client功能和server功能1.2.1 client功能注册每个微服务启动时将自己的网络地址等信息注册到注册中心注册中心会存储(内存中)这些信息。获取服务注册表服务消费者从注册中心查询服务提供者的网络地址并使用该地址调用服务提供者为了避免每次都查注册表信息所以client会定时去server拉取注册表信息到缓存到client本地。心跳各个微服务与注册中心通过某种机制(心跳)通信若注册中心长时间和服务间没有通信就会注销该实例。调用实际的服务调用通过注册表解析服务名和具体地址的对应关系找到具体服务的地址进行实际调用。1.2.2 server注册中心功能服务注册表记录各个微服务信息例如服务名称ip端口等。注册表提供 查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销)。服务注册与发现注册将微服务信息注册到注册中心。发现查询可用微服务列表及其网络地址。服务检查定时检测已注册的服务如发现某实例长时间无法访问就从注册表中移除。二、Eureka单节点搭建2.1 pom.xml在有的教程中会引入 spring-boot-starter-web这个依赖其实不用因为 spring-cloud-starter-netflix-eureka-server的依赖已经包含了它在pom依赖进去就可以了dependency groupIdorg.springframework.cloudgroupId artifactIdspring-cloud-starter-netflix-eureka-serverartifactIddependency2.2 application.ymlserver: port: 8500eureka: client: #是否将自己注册到Eureka Server,默认为true由于当前就是server故而设置成false表明该服务不会向eureka注册自己的信息 register-with-eureka: false #是否从eureka server获取注册信息由于单节点不需要同步其他节点数据用false fetch-registry: false #设置服务注册中心的URL用于client和server端交流 service-url: defaultZone: http://localhost:8080/eureka/2.3 服务端启动类启动类上添加此注解标识该服务为配置中心EnableEurekaServerimport org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;EnableEurekaServerSpringBootApplicationpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args);    }}2.4 启动我们启动 EurekaDemoApplication然后在浏览器中输入地址 http://localhost:8500/就可以启动我们的 Eureka 了我们来看下效果出现了这个画面就说明我们已经成功启动~只是此时我们的服务中是还没有客户端进行注册三、服务注册注意在客户端pom里面我们需要加上 spring-boot-starter-web否则服务是无法正常启动的3.1 pom.xml dependency groupIdorg.springframework.bootgroupId artifactIdspring-boot-starter-webartifactId dependency dependency groupIdorg.springframework.cloudgroupId artifactIdspring-cloud-starter-netflix-eureka-clientartifactId dependency 3.2 application.yml#注册中心eureka: client: #设置服务注册中心的URL service-url: defaultZone: http://localhost:8500/eureka/ #服务名 instance: appname: mxn3.3 客户端启动类在客户端启动类中我们需要加上 EnableDiscoveryClientimport org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;EnableDiscoveryClientSpringBootApplicationpublic class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); }}3.4 查看效果工程启动后刷新 http://localhost:8500/页面我们可以发现服务注册成功了并且我们可以在idea日志打印中看到DiscoveryClient_MXN/DESKTOP-5BQ3UK8-registration status:204说明就是注册成功了 Eureka Server与Eureka Client之间的联系主要通过心跳的方式实现。心跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态维护本服务实例在注册表中租约的有效性。Eureka Client将定时从Eureka Server中拉取注册表中的信息并将这些信息缓存到本地用于服务发现四、Eureka 端点官网地址https://github.com/Netflix/eureka/wiki/Eureka-REST-operationsEureka服务器还提供了一个端点 (eureka/apps/{applicaitonName})可以查看所注册的服务详细信息 。applicaitonName就是微服务的名称比如这里我们访问 http://localhost:8500/eureka/apps/mxn五、Eureka 原理5.1 本质存储了每个客户端的注册信息。EurekaClient从EurekaServer同步获取服务注册列表。通过一定的规则选择一个服务进行调用5.2 Eureka架构图服务提供者 是一个eureka client向Eureka Server注册和更新自己的信息同时能从Eureka Server注册表中获取到其他服务的信息。服务注册中心 提供服务注册和发现的功能。每个Eureka Cient向Eureka Server注册自己的信息也可以通过Eureka Server获取到其他服务的信息达到发现和调用其他服务的目的。服务消费者 是一个eureka client通过Eureka Server获取注册到其上其他服务的信息从而根据信息找到所需的服务发起远程调用。同步复制 Eureka Server之间注册表信息的同步复制使Eureka Server集群中不同注册表中服务实例信息保持一致。远程调用 服务客户端之间的远程调用。注册 Client端向Server端注册自身的元数据以供服务发现。续约 通过发送心跳到Server以维持和更新注册表中服务实例元数据的有效性。当在一定时长内Server没有收到Client的心跳信息将默认服务下线会把服务实例的信息从注册表中删除。下线 Client在关闭时主动向Server注销服务实例元数据这时Client的服务实例数据将从Server的注册表中删除。获取注册表 Client向Server请求注册表信息用于服务发现从而发起服务间远程调用。5.3 Eureka自我保护有时候我们会看到这样的提示信息EMERGENCY!EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEYRE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.这是因为默认情况下Eureka Server在一定时间内没有接收到某个微服务心跳会将某个微服务注销(90S)。但是当网络故障时微服务与Server之间无法正常通信上述行为就非常危险因为微服务正常不应该注销它的指导思想就是 宁可保留健康的和不健康的也不盲目注销任何健康的服务我们也可以通过命令去关闭自我保护的功能eureka: server: enable-self-preservation: false那么自我保护是如何触发的呢自我保护机制的触发条件是当每分钟心跳次数( renewsLastMin) 小于 numberOfRenewsPerMinThreshold时并且开启自动保护模式开关( eureka.server.enable-self-preservationtrue) 时触发自我保护机制不再自动过期租约 上面我们所有的小于 numberOfRenewsPerMinThreshold到底是怎么计算的呢我们在eureka源码中可以得知numberOfRenewsPerMinThreshold expectedNumberOfRenewsPerMin * 续租百分比(默认为0.85)expectedNumberOfRenewsPerMin 当前注册的应用实例数 x 2当前注册的应用实例数 x 2 是因为在默认情况下注册的应用实例每半分钟续租一次那么一分钟心跳两次因此 x 2例如我们有10个服务期望每分钟续约数10 * 220期望阈值20*0.8517当少于17时就会触发自我保护机制5.4 健康检查由于server和client通过心跳保持 服务状态而只有状态为UP的服务才能被访问。看eureka界面中的status。比如心跳一直正常服务一直UP但是此服务DB(数据库)连不上了无法正常提供服务。此时我们需要将 微服务的健康状态也同步到server。只需要启动eureka的健康检查就行。这样微服务就会将自己的健康状态同步到eureka。配置如下即可。在client端配置将自己的健康状态传播到server。eureka: client: healthcheck: enabled: true5.5 Eureka监听事件import com.netflix.appinfo.InstanceInfo;import org.springframework.cloud.netflix.eureka.server.event.*;import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;import java.time.LocalDateTime;Componentpublic class CustomEvent { EventListener public void listen(EurekaInstanceCanceledEvent event ) { System.out.println(LocalDateTime.now()服务下线事件:event.getAppName()---event.getServerId());//发钉钉 } EventListener public void listen(EurekaInstanceRegisteredEvent event) { InstanceInfo instanceInfo event.getInstanceInfo(); System.out.println(LocalDateTime.now()服务上线事件:instanceInfo.getAppName()---instanceInfo.getInstanceId()); } EventListener public void listen(EurekaInstanceRenewedEvent event) { System.out.println(LocalDateTime.now()服务续约/心跳上报事件:event.getAppName()---event.getServerId()); } EventListener public void listen(EurekaRegistryAvailableEvent event) { System.out.println(LocalDateTime.now()注册中心可用事件); } EventListener public void listen(EurekaServerStartedEvent event) { System.out.println(LocalDateTime.now()注册中心启动事件); }}5.6 Renew: 服务续约Eureka Client 会每隔 30 秒发送一次心跳来续约。通过续约来告知 Eureka Server 该 Eureka Client 运行正常没有出现问题。默认情况下如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约Server 端会将实例从其注册表中删除此时间可配置一般情况不建议更改。5.6 服务剔除如果Eureka Client在注册后既没有续约也没有下线(服务崩溃或者网络异常等原因)那么服务的状态就处于不可知的状态不能保证能够从该服务实例中获取到回馈所以需要服务剔除此方法定时清理这些不稳定的服务该方法会批量将注册表中所有过期租约剔除剔除是定时任务默认60秒执行一次。延时60秒间隔60秒剔除的限制1.自我保护期间不清除。2.分批次清除。六、Eureka缺陷由于集群间的同步复制是通过HTTP的方式进行基于网络的不可靠性集群中的Eureka Server间的注册表信息难免存在不同步的时间节点不满足CAP中的C(数据一致性)七、总结中间我们讲解了eureka的节点搭建以及原理对于现在很火热的微服务我们对Eureka是非常有必要进行了解的如果觉得文章对你有帮助来个点赞支持吧如果对文章有疑问或建议欢迎讨论留言谢谢大家~--  End  --———————1.原创不易你的「在看」是我创作的动力。2.欢迎关注公众号 牧小农的夏天「带你一起学Java」3.疫情期间勤洗手戴口罩做好个人防护。“在看转发”是最大的支持
http://www.ihoyoo.com/news/28604.html

相关文章:

  • 营销型科技网站建设上海网网站建
  • 学校为什么要建设网站上海网站建设设计制作
  • 帮人做网站seo咨询常德
  • 吴江住房建设局网站深圳百度快速排名优化
  • 简阳建设厅官方网站wordpress左侧悬浮导航菜单源码
  • 广州做网站那家好网页模板在线设计
  • 凡科建站模板企业移动网站建设商
  • 做设计有哪些接私活的网站新航道培训机构怎么样
  • 和城乡建设厅网站爱搜索中级网站建设
  • 平面设计培训学校排名新乐做网站优化
  • 电子商务专业网站太原云建站模板
  • 河南省建设网站首页遵义晚报
  • 打开无忧管理后台网站可以免费建网站的
  • 做全景的h5网站福州专业的seo软件
  • 营销网站制作企业网站做好后怎么做seo
  • 万网一台虚拟主机做多个网站海洋网络提供网站建设
  • 东莞网站建设网络公司排名做视频网站应该选什么服务器
  • 七台河北京网站建设拼多多推广
  • 淘宝店可以做团购的网站常熟住房和城乡建设局网站首页
  • 网站建设的功能需求分析策划书开发新闻类网站
  • 沾益住房和城乡建设局网站网站源码 一品资源网
  • 延吉网站优化宁波 网站建设
  • 网站设计案例如何注册公司并获得营业执照
  • 美容医院网站建设泰安房产网签最新消息
  • 网站图片如何做防盗链注册一个5000万空壳公司要多少钱
  • 长沙百度做网站多少钱公司网站制作与推广
  • 住房城乡建设局网站首页做外贸生意在哪个网站
  • 网站建设需要多少天时间哪个网站可以做设计赚钱
  • 广州应用多的自助建站资讯硬件开发常用工具软件
  • 金坛网站建设哪家好电商小程序报价