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

做360手机网站优化排seo网站源码

做360手机网站优化排,seo网站源码,创建网站的步骤,网站文章列表模板概叙 什么是Eureka#xff1f; Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心#xff0c;用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分#xff0c;基于 Netflix Eureka 进行了二次封装#xff0c;主要负责…概叙 什么是Eureka Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分基于 Netflix Eureka 进行了二次封装主要负责完成微服务架构中的服务治理功能。 Spring Cloud Eureka 是一个基于 REST 的服务并提供了基于 Java 的客户端组件能够非常方便的将服务注册到 Spring Cloud Eureka 中进行统一管理。 Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分基于 Netflix Eureka 做了二次封装主要负责实现微服务架构中的服务治理功能。 服务治理是微服务架构中必不可少的一部分阿里开源的 Dubbo 框架就是针对服务治理的。服务治理必须要有一个注册中心除了用 Eureka 作为注册中心外我们还可以使用 Consul、Etcd、Zookeeper 等来作为服务的注册中心。 Eureka 由两部分组成服务端和客户端服务端就是注册中心用来接收其它的服务注册客户端是一个java客户端用来注册并可以实现负载均衡等功能。 为什么 Eureka 比 Zookeeper 更适合作为注册中心呢 主要是因为 Eureka 是基于 AP 原则构建的而 ZooKeeper 是基于 CP 原则构建的。在分布式系统领域有个著名的 CAP 定理即 C 为数据一致性A 为服务可用性P 为服务对网络分区故障的容错性。这三个特性在任何分布式系统中都不能同时满足最多同时满足两个。Zookeeper 有一个 Leader而且在这个 Leader 无法使用的时候通过 PaxosZAB算法选举出一个新的 Leader。这个 Leader 的任务就是保证写数据的时候只向这个 Leader 写入Leader 会同步信息到其他节点。通过这个操作就可以保证数据的一致性。  想要保证 AP 就要用 Eureka想要保证 CP 就要用 Zookeeper。  Eureka体系结构 服务注册 注册中心 拆开来看注册和中心。注册比如用户注册就是将自己的信息注册在某个平台上。中心可以理解成一个统一管理信息的平台。所以注册中心顾名思义是统一管理所有注册信息的平台。 服务注册 指的是服务在启动时将自身的信息注册到注册中心中方便信息进行统一管理。服务注册是客户端向注册中心提交信息的动作。 想要参与服务注册发现的实例首先需要向Eureka服务器注册信息 注册在第一次心跳发生时提交 Renew:续租心跳。Eureka客户需要每30秒发送一次心跳来续租Fetch RegistryEureka客户端拉取注册表信息并缓存在本地。可以30秒更新一次。CancelEureka客户端在关闭时向Eureka服务器发送取消请求。这将从服务器的实例注册表中删除实例从而有效地将实例从通信量中取出。 服务注册--客户端配置选项 1 2 3 4 5 6 #续约发送间隔默认30秒心跳间隔 eureka.instance.lease-renewal-interval-in-seconds5 #表示eureka client间隔多久去拉取服务注册信息默认为30秒对于api-gateway如果要迅速获取服务注册状态可以缩小该值比如5秒 eureka.client.registry-fetch-interval-seconds5 # 续约到期时间默认90秒 eureka.instance.lease-expiration-duration-in-seconds60 服务注册--服务器端配置选项 1 2 3 4 #关闭自我保护模式 eureka.server.enable-self-preservationfalse #失效服务间隔 eureka.server.eviction-interval-timer-in-ms3000 服务发现 服务发现 指的是从注册中心获取对应服务的信息,是客户端向注册中心拉取pull信息的动作。 Eureka原理 概念实现服务治理即管理所有的服务信息和状态。 eureka分为两部分Server端和Client端 Client端向Server端定时发送心跳包。 Server端根据Clinet端的心跳包来维护一个服务列表判断服务是否在线。 client功能 注册每个微服务启动时将自己的网络地址等信息注册到注册中心注册中心会存储内存中这些信息。获取服务注册表服务消费者从注册中心查询服务提供者的网络地址并使用该地址调用服务提供者为了避免每次都查注册表信息所以client会定时去server拉取注册表信息到缓存到client本地。心跳各个微服务与注册中心通过某种机制心跳通信若注册中心长时间和服务间没有通信就会注销该实例。调用实际的服务调用通过注册表解析服务名和具体地址的对应关系找到具体服务的地址进行实际调用。server注册中心功能 服务注册表记录各个微服务信息例如服务名称ip端口等。注册表提供 查询API查询可用的微服务实例和管理API用于服务的注册和注销。服务注册与发现注册将微服务信息注册到注册中心。发现查询可用微服务列表及其网络地址。服务检查定时检测已注册的服务如发现某实例长时间无法访问就从注册表中移除。 自我保护机制 默认情况下Eureka Server在一定时间内90s没有接收到某个微服务心跳就会将该服务注销。但是当网络出现问题、故障微服务之间无法通信就不应该直接注销了。所以Eureka Server的自我保护机制是在短时间内出现大量客户端丢失就不会从注册表中注销。思想宁可保留健康的和不健康的也不盲目注销任何健康的服务。关闭自我保护 1 2 3 eureka:   server:     enable-self-preservation: false Eureka 健康检查 server和client通过心跳保持 服务列表而只有状态为UP的服务才能被访问。看eureka界面中的status。 比如心跳一直正常服务一直UP但是此服务DB连不上了无法正常提供服务(有的时候业务出现问题catch住异常也可以手动传输DOWN让服务下线)。 此时我们需要将 微服务的健康状态也同步到server。只需要启动eureka的健康检查就行。这样微服务就会将自己的健康状态同步到eureka。配置如下即可。 开启手动控制 在client端配置将自己真正的健康状态传播到server。 1 2 3 4 eureka:   client:     healthcheck:       enabled: true Client端配置Actuator 1 2 3 4 dependency         groupIdorg.springframework.boot/groupId         artifactIdspring-boot-starter-actuator/artifactId /dependency 改变健康状态的Service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Service public class HealthStatusService implements HealthIndicator{     private Boolean status true;     public void setStatus(Boolean status) {         this.status  status;     }     Override     public Health health() {         // TODO Auto-generated method stub         if(status)         return new Health.Builder().up().build();         return new Health.Builder().down().build();     }     public String getStatus() {         // TODO Auto-generated method stub         return this.status.toString();     } Eureka监听事件 EurekaInstanceCanceledEvent 服务下线事件EurekaInstanceRegisteredEvent 服务注册事件EurekaInstanceRenewedEvent 服务续约事件EurekaRegistryAvailableEvent 注册中心可用事件EurekaServerStartedEvent 注册中心启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceCanceledEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; Component public class CustomEvent {           EventListener     public void listen(EurekaInstanceCanceledEvent e) {         System.out.println(e.getServerId()下线事件);     } } 将Eureka Client停止后打印 api-listen-order:30.136.133.9:port下线事件 Eureka缺陷 集群之间的同步复制是通过HTTP的方式进行基于网络的不可靠性集群中的Eureka Server间的注册表信息难免存在不同步的时间节点不满足CAP中的C(数据一致性)。 Eureka核心概念服务注册和服务发现 Eureka有三个角色 Eureka Server注册中心Eureka Provider服务提供者Eureka Consumer服务消费者 2.1 Eureka Server Eureka Server主要对外提供了三个功能 服务注册所有的服务都注册到Eureka Server上面来提供注册表注册表就是所有注册上来服务的一个列表Eureka Client在调用服务时需要获取这个注册表一般来说这个注册表会缓存下来如果缓存失效则直接获取最新的注册表同步状态Eureka Client 通过注册、心跳等机制和Eureka Server同步当前客户端的状态 2.2 Eureka Client Eureka Client 主要是来简化每一个服务和Eureka Server 之间的交互。Eureka Client 会自动拉取、更新以及缓存Eureka Server 中的信息这样即便Eureka Server 所有节点都宕机Eureka Client 依然能够获取到想要调服务的地址但是地址可能不准确。 2.2.1 服务注册 服务提供者将自己注册到服务注册中心(Eureka Server)需要注意所渭的服务提供者只是一个业务上的划分本质上他就是一个 Eureka Client 。当 Eureka Client 向 Eureka Server 注册时他需要提供自身的一些元数据信息例如IP地址、端囗、名称、运行状态等等。 2.2.2 服务续约 Eureka Client 注册到 Eureka Server 上之后事情还没有结束刚刚开始而已。注册成功后默认情况下Eureka Client 每隔30秒就要向 Eureka Server 发送一条心跳消息来告诉Eureka Server 我还在运行。如果 Eureka Server 连续90秒有沿有收到Eureka Client 的续约消息连续三次没发送它会认为Eureka Client已经线了会将掉线的Eureka Client从当前的服务注册列表中剔除。 服务续约有两个相关的属性一般不建议修改 1 2 3 4 # 表示服务的续约时间默认是30秒 eureka.instance.lease-renewal-intetval-in-seconds30 # 服务失效时间默认是90秒 eureka.instance.lease-expiration-duration-in-seconds90 2.2.3 服务下线 当 Eureka Client 下线时它会主动发送一条消息告诉Eureka Server我下线了。 2.2.4 获取注册表信息 Eureka Client 从Eureka Server 上获取服务的注册信息将其缓存在本地。本地客户端在需要调用远程服务时会从该信息中查找远程服务所对应的IP地址、端囗等信息。Eureka Client 上缓存的服务注册信息会定期更新30秒)如果 Eureka Server 返回的注册表信息与本地缓存的注册表信息不同的话Eureka Client 会自动处理。 这里也涉及至两个属性一个是是否允许获取注册表信息 1 eureka.client.fetch-registrytrue Eureka Client 上缓存的服务注册信息定期更新的时间间隔默认30秒 1 eureka.client.registry-fetch-interval-seconds30 Eureka实战 Eureka 的架构主要分为 Eureka Server 和 Eureka Client 两部分Eureka Client 又分为 Applicaton Service 和 Application ClientApplicaton Service 就是服务提供者Application Client 就是服务消费者。Eureka Client 会向 Eureka Server 发送请求进行注册并将自己的一些信息发送给 Eureka Server。注册成功后每隔一定的时间Eureka Client 会向 Eureka Server 发送心跳来续约服务也就是汇报健康状态。 如果客户端长时间没有续约那么 Eureka Server 将在 90 秒默认内从服务器注册表中删除客户端的信息。Eureka Client 还会定期从 Eureka Server 拉取注册表信息然后通过Ribbon 组件根据负载均衡算法得到一个目标并发起远程调用。应用正常停止时也会通知 Eureka Server 移除相关信息信息成功移除后其他客户端会更新服务的信息这样就不会调用已经下线的服务了当然这个会有延迟有可能会调用到已经失效的服务所以在客户端会开启失败重试功能来避免这个问题。Eureka Server 会有多个节点组成一个集群保证高可用。Eureka Server 没有集成其他第三方存储而是存储在内存中内部维护一个注册表的概念。所以 Eureka Server 之间会将注册信息复制到集群中的 Eureka Server 的所有节点。 这样数据才是共享状态任何的 Eureka Client 都可以在任何一个 Eureka Server 节点查找注册表信息。 Eureka服务端单节点构建 打开start.spring.io/ 或者阿里云的快速start start.aliyun.com/bootstrap.h… 开始构建对应的服务端项目。推荐使用阿里云的快速start因为访问速度更快些。 自动生成完成后在resource目录下新建application.yml文件替换原来的application.properties。内容如下 1 2 3 4 5 6 7 8 9 10 11 12 #应用名称 spring:   application:     name: eureka-server server:   port: 8001 eureka:   client:     # 是否将自己实例注册到Eureka Server中     register-with-eureka: false     # 是否应从Eureka Server获取Eureka注册表信息     fetch-registry: false 在SpringBoot的启动类上添加EnableEurekaServer 注解表示是Eureka 服务端。  项目创建成功后在项目启动类上添加注解标记该项目是一个Eureka Server 1 2 3 4 5 6 7 SpringBootApplication EnableEurekaServer //开启Eureka public class EurekaApplication {       public static void main(String[] args) {         SpringApplication.run(EurekaApplication.class, args);     } } 然后启动项目项目启动成功后在浏览器访问http://localhost:8001 就可以看到Eureka的管理页面了。 目前还没有任何一个服务注册到 Eureka 中不过从上图中我们还是可以看到关于 Eureka 服务器内存、CPU 、IP等的相关信息。 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已经不能确认这些已经启动的实例是否可用由于最近的续订次数小于续订阈值续订期望值为了安全起见实例可用当前这些实例不会删除。 这是因为Eureka进入自我保护模式SELF PRESERVATION MODE。 Eureka服务端集群构建 高可用可以通过运行多个Eureka server实例并相互注册的方式实现。Server节点之间会彼此增量地同步信息从而确保节点中数据一致。 写一个地址也行但是server得互相注册EurekaServer会自动同步但为了避免极端情况还是写多个。 集群中各个server会从其他server同步注册表信息。 1 2 3 4 5 6 #client配置 eureka:   client:     #设置服务注册中心的URL     service-url:                            defaultZone: http://root:rooteureka-7801:7801/eureka/,http://root:rooteureka-7802:7802/eureka/ 单个 Eureka 服务可能存在的单点失效问题我们通常都需要构建一个 Eureka 服务器集群来确保注册中心本身的可用性。与传统的集群构建方式不同如果我们把 Eureka 也视为一个服务也就是说 Eureka服务自身也能注册到其他 Eureka 服务上从而实现相互注册并构成一个集群。 同样可以通过单节点构建步骤构建两个Eureka Server服务A和B。对应的yml配置如下 1 2 3 4 5 6 7 8 server:   port: 8761 eureka:   instance:     hostname: eurekaA   client:     serviceUrl:        defaultZone: http:// eurekaB:8762/eureka/ 1 2 3 4 5 6 7 8 server:   port: 8762 eureka:   instance:     hostname: eurekaB   client:     serviceUrl:        defaultZone: http://eurekaA:8761/eureka/ **eureka.instance.hostname **是Eureka 实例管理类配置项 用于指定当前 Eureka 服务的主机名称。 需要在本机的hosts文件中添加以下信息 127.0.0.1 eurekaA  127.0.0.1 eurekaB 我们可以看到服务端A和B只调整了端口和地址的引用。构建 Eureka 集群模式的关键点在于使用客户端配置项 eureka.client.serviceUrl.defaultZone 用于指向集群中的其他 Eureka 服务器。所以 Eureka 集群的构建方式实际上就是将自己作为服务并向其他注册中心注册自己这样就形成了一组互相注册的服务注册中心以实现服务列表的同步。这个场景下 register-with-eureka是否将自己实例注册到Eureka Server中 和 fetch-registry是否应从Eureka Server获取Eureka注册表信息配置项应该都使用其默认的 true 值我们不需要对其进行显式的设置。如果你尝试使用本机搭建集群环境显然 eureka.instance.hostname 配置项中的 eureka1 和 eureka2 是无法访问的所以需要在本机hosts 文件中添加以下信息。现在启动这两个 Eureka 服务然后分别打开 http://127.0.0.1:8761/ 和 http://127.0.0.1:8762/ 端点可以看到各自的服务注册效果。 Eureka客户端构建 客户端引入的pom坐标有差异需要引入客户端坐标 1 2 3 4 dependency      groupIdorg.springframework.cloud/groupId      artifactIdspring-cloud-starter-netflix-eureka-client/artifactId /dependency 在启动类上需要加EnableDiscoveryClient注解表示是Eureka客户端。 1 2 3 4 5 6 7 EnableDiscoveryClient SpringBootApplication public class EurekaClientProviderApplication {     public static void main(String[] args) {         SpringApplication.run(EurekaClientProviderApplication.class, args);     } } yml配置如下 1 2 3 4 5 6 7 8 9 10 spring:   application:     name: eureka-client  server:   port: 8081 eureka:   client:     serviceUrl:     #指定eureka服务端地址如果是集群则通过逗号分隔       defaultZone: http://localhost:8761/eureka/ 配置完成后可以在eureka控制台查看到相关注册信息。 启动命令 java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profiles.activea java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profiles.activeb 注意启动第一个a之后你会发现控制台报错是因为它一直发送心跳而同时b还没有上线等b也启动后错误即可消失。如果还报错那就是代码的问题了。 启动成功后就可以看到两个服务之间互相注册共同组成一个集群。 Eureka分区策略 第一步背景和概念介绍 背景用户量比较大或者用户地理位置分布范围很广的项目一般都会有多个机房。这个时候如果上线springCloud服务的话我们希望一个机房内的服务优先调用同一个机房内的服务当同一个机房的服务不可用的时候再去调用其它机房的服务以达到减少延时的作用。 概念region能够简单理解为地理上的分区。好比亚洲地区或者华北地区再或者北京地区等等没有具体大小的限制根据项目具体的状况能够自行划分region。 zone能够简单理解为 region 内的具体机房好比说 region 划分为华北地区而后华北地区有两个机房就能够在此 region 之下划分出 zone1、zone2 两个 zone eureka 也借用了 region 和 zone 的概念架构  如图所示有一个 region:华北地区下面有两个机房机房A 和机房Burl 每一个机房内有一个 Eureka Server 集群 和两个服务提供者 ServiceA 和 ServerB如今假设 serverA 须要调用 ServerB 服务按照就近原则serverA 会优先调用同一个 zone 内的 ServiceB当 ServiceB 不可用时才会去调用另外一个 zone 内的 ServiceBcode 第二步相关参数介绍 服务注册相关: eureka: client: # 尽可能向同一区域的 eureka 注册,默认为true prefer-same-zone-eureka: true #地区 region: huabei availability-zones: huabei: zone-1,zone-2 service-url: zone-1: http://Eureka的Ip地址:8761/eureka/ zone-2: http://Eureka的Ip地址:8761/eureka/ 当存在多个注册中心时选择逻辑为cdn 若是 prefer-same-zone-eureka 为 false按照 service-url 下的 list 取第一个注册中心来注册并和其维持心跳检测再也不向list内的其它的注册中心注册和维持心跳。server只有在第一个注册失败的状况下才会依次向其它的注册中心注册总共重试3次若是3个service-url都没有注册成功则注册失败。blog 注册失败后每隔一个心跳时间会再次尝试。it 若是 prefer-same-zone-eureka 为true先经过 region 取 availability-zones 内的第一个zone而后经过这个zone取 service-url 下的list并向list内的第一个注册中心进行注册和维持心跳再也不向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的状况下才会依次向其它的注册中心注册总共重试3次若是3个service-url都没有注册成功则注册失败。注册失败后每隔一个心跳时间会再次尝试。 为了保证服务注册到同一个 zone 的注册中心必定要注意 availability-zones 的顺序必须把同一 zone 写在最前面 eureka: instance: # 服务和注册中心的心跳间隔时间默认为30s lease-renewal-interval-in-seconds: 30 # 服务和注册中心的心跳超时时间默认为90s lease-expiration-duration-in-seconds: 90 metadata-map: # 当前服务所属的 zone zone: zone1 服务消费者和服务提供者分别属于哪一个zone均是经过 eureka.instance.metadata-map.zone 来断定的。服务消费者会先经过 ribbon 去注册中心拉取一份服务提供者的列表而后经过 eureka.instance.metadata-map.zone 指定的 zone 进行过滤过滤以后若是同一个 zone 内的服务提供者有多个实例则会轮流调用。只有在同一个 zone 内的全部服务提供者都不可用时才会调用其它zone内的服务提供者。
http://www.dnsts.com.cn/news/21538.html

相关文章:

  • 企业网站怎么查济南哪个网站建设最好
  • 购物网站设计理念君隆网站建设
  • 自己弄一个网站要多少钱专做hiphop的网站
  • 东莞网上做公司网站常州设计网站
  • h5做招聘网站可以吗温州优化网站
  • 网站网页开发公司如何提高wordpress访问速度
  • 常见的网站建设技术长沙有哪些大型工厂
  • 网站板块设计移动商城touch版h5页面
  • 辞职做网站抖音seo推荐算法
  • 公司网站无法打开网站vip功能怎么实现
  • 数据库 搭建 网站中国互联网协会副理事长
  • 静态页面网站怎么做青岛全网推广怎么做
  • 洛阳做网站的公司免费网站建设站
  • 毕业设计答辩网站开发原理天峻县公司网站建设
  • 保定网站优化招聘哪些公司可以做网站
  • 重庆微网站PHP 网站开发 入门
  • 如何申请深圳设计公司网站百度指数在线查询小程序
  • 造作网站模版学院网站建设情况
  • 公司企业网站建设步骤wordpress禁止收录
  • 网站建设对接流程旅游景区网站模板
  • 新网官方网站潮州哪里做网站
  • 新手学纪事本html代码做网站东莞常平翔龙天地
  • 营销型网站维护多少钱偃师网络营销的概念
  • 顺德建设局网站高性能标准网站建设进阶指南 pdf
  • 中小企业网站制作推广方法端游网络游戏排行榜
  • 网站制作学校找哪家wordpress找回密码邮件
  • 目前做啥网站能致富高端产业主要指哪些领域
  • 做网站维护需要多少钱wordpress 页码插件
  • php mysql网站开发全程实例pdf娄底网站建设最专业
  • 微网站和普通网站区别湖州建设网站