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

菜谱网站 源码网上租服务器价格表

菜谱网站 源码,网上租服务器价格表,php网站建设设计制作方案,wordpress转织梦服务治理#xff1a;Eureka 服务治理 主要用来实现各个微服务实例的自动化注册与发现 服务注册#xff1a; 服务治理框架中#xff0c;通常会构建一个注册中心#xff0c;每个服务单元向注册中心登记自己提供的服务#xff0c;将主机与端口号#xff0c;版本号#x…服务治理Eureka 服务治理 主要用来实现各个微服务实例的自动化注册与发现 服务注册 服务治理框架中通常会构建一个注册中心每个服务单元向注册中心登记自己提供的服务将主机与端口号版本号通信协议等一些附加信息告知注册中心注册中心按服务名分类组织服务清单。服务注册中心需要以心跳的方式去监测清单中的服务是否可用若不可用需要从服务清单中剔除达到排除故障服务的效果。 服务发现服务间的调用通过服务名发起请求调用实现。注册中心会将服务的位置清单返回给请求方当请求方要发起调用的时候从该清单中以某种轮询策略取出一个位置来进行服务调用。 Netflix Eureka 使用Netflix eureka实现服务注册与发现包含服务端组件客户端组件主要适用于通过java实现的分布式系统。 Eureka服务端服务注册中心支持高可用配置如果以集群模式部署当集群中有分片出现故障时eureka转入自我保护模式。允许在分片故障期间继续提供服务的发现和注册。当故障分片恢复运行时集群中的其他分片会把他们的状态再次同步回来。Eureka客户端主要处理服务的注册和发现。通过注解和参数配置的方式嵌入在客户端程序代码中在应用程序运行时客户端向注册中心注册自身提供的服务并周期性地发送心跳来更新它的服务租约。也能从服务端查询当前注册的服务信息并把他们缓存到本地周期性的刷新服务状态。 搭建服务注册中心 EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话 该服务注册中心也会将自己作为客户端来尝试注册自己要禁用它的客户端注册行为配置文件 eureka.client.register-with-eureka:false代表不向注册中心注册自己eureka.client.fetch-registry注册中心不需要去检索服务设置为false 注册服务提供者 注入DiscoveryClient对象EnableDiscoveryClient注解激活Eureka中DiscoveryClient实现配置文件中spring.application.name属性为服务命名配置文件eureka.client.serviceUrl.defaultZone属性来指定服务注册中心的地址 高可用注册中心 Eureka高可用实际就是将自己作为服务向其他服务注册中心注册自己这样形成了一组互相注册的服务注册中心实现服务清单的互相同步达到高可用效果。不想使用主机名来定义注册中心的地址也可以使用ip地址的形式但需要在配置文件中增加配置参数eureka.instance.prefer-ip-addresstrue 该值默认为false 服务发现与消费 消费者发现服务和消费服务 服务发现的任务由Eureka客户端完成服务消费的任务由Ribbon完成 Ribbon基于HTTP和TCP的客户端负载均衡器可以通过客户端中配置的ribbonServerList服务端列表去轮询访问达到均衡负载的作用Ribbon与Eureka联合使用时Ribbon的服务实例清单RibbonServerList会被DiscoveryEnabledNIWSServerList重写扩展成从Eureka注册中心获取服务端列表。使用NIWSDiscoveryPing来取代IPing将职责委托给Eureka来确定服务端是否已经启动。 Eureka详解 核心角色服务注册中心服务提供者服务消费者 基础架构 核心三要素 服务注册中心服务提供者服务消费者 服务治理机制 例如 服务注册中心1和服务注册中心2互相注册组成了高可用集群服务提供者启动了两个实例一个注册到服务注册中心1上另一个注册到服务注册中心2上还有两个服务消费者他们都分别只指向了一个注册中心 重要通信行为 服务提供者 服务注册 服务提供者在启动的时候会通过发送rest请求将自己注册到eureka server同时带些元数据信息server接到请求后将元数据信息存储在一个双层结构map中 第一层key是服务名第二层key是具体服务实例名 注册配置eureka.client.register-with-eurekatrue 服务同步 信息被两个注册中心维护由于服务注册中心之间因为互相注册为服务当服务提供者发送注册请求到一个服务注册中心会将请求转发给集群中相连的其他注册中心从而实现注册中心之间的服务同步 服务续约 注册完服务之后服务提供者会维护一个心跳用来持续告诉Eureka server还活着以防剔除任务将该服务实例从服务列表中排除出去称为服务续约 //用于定义服务续约任务的调用间隔时间默认30s eureka.instance.lease-renewal-interval-in-seconds30 //用于定义服务失效时间默认90s eureka.instance.lease-expiration-duration-in-seconds90服务消费者 获取服务 此时服务中心已经注册了一个服务该服务有两个实例启动服务消费者他会发送一个rest请求给服务注册中心获取注册的服务清单eureka会维护一份只读的服务清单来返回给客户端同时该缓存清单会每隔30秒更新一次获取服务配置eureka.client.fetch-registrytrue修改缓存清单更新时间eureka.client.registry-fetch-interval-seconds30 服务调用 服务消费者通过服务名获得具体提供服务的实例名和该实例的元数据信息在Ribbon中默认采用轮询的方式进行调用实现客户端的负载均衡一个region中可以包含多个zone每个服务客户端需被注册到一个zone中每个客户端对应一个region和一个zone服务调用时优先访问同处一个zone的服务提供方若访问不到就访问其他的zone 服务下线 当服务实例进行正常关闭操作时会触发一个服务下线rest请求给eureka server告诉服务注册中心服务端收到请求后将改服务状态置为下线down并把该下线事件传播出去。 服务注册中心 失效剔除 服务非正常下线时服务注册中心并未收到服务下线请求需要从服务列表中将这些实例剔除在启动时创建一个定时任务默认每隔一段时间将当前清单中超时没续约的服务剔除 自我保护 eureka server在运行期间会统计心跳失败的比例在15min之内是否低于85%如果出现低于的情况eureka server会将当前的实例注册信息保护起来让这些实例不会过期尽可能保护这些注册信息。eureka.server.enable-self.preservationfalse参数来关闭保护机制已确保注册中心可以将不可用的实例正确剔除 源码分析 将普通的springboot应用注册到eureka server或是从eureka server中获取服务列表时主要做两件事 在应用主类中配置了EnableDiscoveryClient注解 主要用来开启DiscoveryClient实例 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Inherited Import({EnableDiscoveryClientImportSelector.class}) public interface EnableDiscoveryClient {boolean autoRegister() default true; }DiscoveryClient相关接口DiscoveryClientEurekaDiscoveryClientEurekaClientLookupService DiscoveryClientspringcloud接口定义了用来发现服务的常用抽象方法通过该接口可以有效地屏蔽服务治理的实现细节可以方便的切换不同服务治理框架EurekaDiscoveryClient实现的是对Eureka发现服务的封装所以依赖了EurekaClient接口EurekaClient继承了LookupService接口主要定义了针对Eureka发现服务的抽象方法而真正实现发现服务的是DiscoveryClient类。 DiscoveryClient类 用于帮助与Eureka Server互相协作Eureka Server负责任务 向Eureka server注册服务实例向Eureka Server服务租约当服务关闭期间向Eureka Server取消租约查询Eureka Server中的服务实例列表 EndpointUtils类中getServiceUrlsMapFromConfig函数Region Zone 通过getRegion函数从配置中读取一个region返回所以一个微服务应用只可以属于一个region不特别配置为defaulteureka.client.region属性定义getAvailabilityZones函数没有特别为region配置zone的时候默认defaultZone可以通过eureka.client.availablity-zones属性设置zone可以设置多个逗号分隔开region和zone是一对多的关系 serviceUrls 获取region和zone之后才开始加载Eureka server的具体地址根据传入的参数按一定算法确定加载位于哪个zone配置的serviceUrlsdefaultZone属性可以配置多个并且需要通过逗号分隔当微服务使用ribbon实现服务调用时对于zone的设置可以在负载均衡时实现区域亲和特性ribbon默认策略会优先访问同客户端处于一个zone中的服务端实例如果没有可用服务实例才会访问其他zone中的实例。所以通过zone属性定义配合实际部署的物理结构可以有效设计出对区域性故障容错集群。 服务注册 DiscoveryClient类initScheduledTasks中 if(clientConifg.shouldRegisterWithEureka())分支内创建了一个InstanceInfoReplicator类的实例会执行一个定时任务定时任务 discoveryClient.register真正触发调用注册的地方。注册操作通过rest请求方式进行。发起注册请求时参数有InstanceInfo对象是注册时客户端的服务的元数据 服务获取与服务续约initScheduledTasks中的其他两个定时任务 服务注册和服务续约在同一个if逻辑中防止被剔除 服务续约相关时间控制参数eureka.instance.lease-renewal-interval-in-seconds30eureka.instance.lease-expiration-duration-in-seconds90 服务续约直接以rest请求方式进行续约服务获取是在独立的一个if判断中判断依据是eureka.client.fetch-registrytrue参数默认为true。不止限于服务启动是一个定时执行任务。 会根据是否是第一次获取发起不同的rest请求和相应的处理。 服务注册中心处理 所有交互都是通过REST请求发起的服务注册中心对各类rest请求的定义都位于eureka.resources包下eg服务注册请求 对注册信息进行一堆校验之后会调用InstanceRegistry对象中的register函数进行服务注册register函数注册 先调用publishEvent函数将该新服务注册的事件传播出去调用AbstractInstanceRegistry父类中的InstanceInfo中的元数据信息存储在一个concurrentHashMap对象中 注册中心存储了两层map 第一层key存储服务名InstanceInfo中的appName第二层key存储实例名InstanceInfo中的instanceId属性 在application.properties中用eureka.client.serviceUrl.defaultZone参数指定了服务注册中心的位置 配置详解 服务端为服务注册中心客户端为各个提供接口的微服务应用 Eureka客户端的配置主要分为 服务注册相关的配置信息包括服务注册中心的地址服务获取的间隔时间可用区域等服务实例相关的配置信息包括服务实例的名称ip地址端口号健康检查路径等 服务注册类配置 这些配置信息都以eureka.client为前缀。常用配置为 指定注册中心 参数eureka.client.serviceUrl 配置值存储在hashmap中设置有一组默认值keydefaultzone value:ip:port/eureka多个使用逗号分隔开为了服务注册中心的安全考虑会为服务注册中心加入安全校验配置serviceUrl时需要在value值url中加入相应的安全校验信息 其他配置 服务实例类配置 配置信息以eureka.instance为前缀 元数据 eureka客户端在向服务注册中心发送注册请求时用来描述自身服务信息的对象其中包含一些标准化的元数据比如服务名称实例名称实例端口等用于服务治理的重要信息以及负载均衡策略或是其他特殊用途的自定义元数据信息 真正服务注册的时候会包装成InstanceInfo对象发送给Eureka服务端。 MapString,String metadata 是自定义元数据信息其他成员变量则是标准化的元数据信息 可以通过eureka.instance.格式对标准化元数据直接进行配置 eureka.instance.metadataMap.zoneshanghai实例名配置 InstanceInfo中的instanceId参数是区分同一服务中不同实例的唯一标识。实例名采用主机名作为默认值使得在同一主机上无法启动多个相同的服务实例。针对同一主机多个服务实例的情况对实例的默认命名做了更为合理的扩展。eg:本地负载均衡调试时统一服务多个实例命名利用应用名加随机数的方式来区分不同的实例从而实现在统一主机上不指定端口就能轻松启动多个实例的效果 端点配置 状态页和健康检查的url在eureka中默认使用了actuator模块提供的/info端点和/health端点为应用设置了context-path或为安全考虑修改了路径需要做些特殊配置 相对路径配置 eureka.instance.statusPageUrlPatheureka.instance.healthCheckUrlPath 绝对路径配置eg以https方式暴露服务和监控端点时 eureka.instance.statusPageUrleureka.instance.healthCheckUrleureka.instance.homePageUrl 健康检测 默认情况下是依靠客户端心跳的方式来保持服务实例的存活但有些情况不能判断通过配置把eureka客户端的健康检测交给spring-boot-actuator模块/health端点实现更加全面的健康状态维护 步骤在pom.xml中引入spring-boot-starter-actuator模块的依赖在application.properties中增加增加配置eureka.client.healthcheck.enabletrue如果客户端的/health端点路径做了一些特殊处理。 其他配置 默认前缀eureka.instance 跨平台支持 参考《spring cloud 微服务实战》
http://wiki.neutronadmin.com/news/300719/

相关文章:

  • 物流运输 有哪些网站可以做推广平邑网站建设
  • 灵璧做网站网站建设的内容有哪些
  • 空壳网站数据企业网站有哪些举几个例子
  • 莱芜网站建设哪家好最好的网站开发系统
  • 长沙优化网站厂家网站的实用性
  • 中国网站建设公司有哪些内容成都爱品阅网络科技有限公司
  • 单位网站建设需要哪些技术qq群短链接生成
  • 免费网站建站模板做ppt找图片的网站有哪些
  • seo网站优化培训要多少钱网站建设钅金手指排名十五
  • 网站维护与排名网站构建的开发费用
  • 设计网站需要哪些流程西宁设计网站
  • 延庆宜昌网站建设哪些网站推广不收费
  • 网站管理问题外贸五金网站建设
  • 网站网页框架构架图怎么做百度下拉框推广网站
  • 校园文化宣传主题网站的建设教育培训机构官网
  • 铁岭房地产网站建设网站建设ag
  • 网站开发的广告词五指山网站开发价格
  • 在线音乐网站开发数据库高密住房和城乡建设局网站
  • 汕头网站制作江西建设推广网站
  • 企业信息门户网站建设方案上海网站建设哪里好
  • 福州专业网站搭建排名wordpress自己的网页
  • 手机微信网站模板广州网站推广哪家强
  • 南昌正规网站公司吗致力于做服务更好的网站建设公司
  • 自己创建个人免费网站wordpress前台登录注册
  • 装修公司网站设计常州制作网站
  • 代理做网站合适吗国内访问wordpress
  • 网站备案回访问题如何作做网站
  • 广州外贸网站效果百度站长平台怎么验证网站
  • 银行网站源码网页与网站设计什么是主题
  • 中山精品网站建设资讯做网站的教科书