做移动网站快速排名软件网站的ftp在哪里可以查到

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

做移动网站快速排名软件,网站的ftp在哪里可以查到,天津建设工程信息网登录不了,建设网站要不要工商执照系列文章目录 【Spring Cloud一】微服务基本知识 Eureka服务注册与服务发现 系列文章目录前言一、什么是Eureka#xff1f;二、为什么要有服务注册发现中心#xff1f;三、Eureka的特性四、搭建Eureka单机版4.1Eureka服务端项目代码pom文件配置文件启动类启动项目查看效果 E…系列文章目录 【Spring Cloud一】微服务基本知识 Eureka服务注册与服务发现 系列文章目录前言一、什么是Eureka二、为什么要有服务注册发现中心三、Eureka的特性四、搭建Eureka单机版4.1Eureka服务端项目代码pom文件配置文件启动类启动项目查看效果 Eureka客户端B项目代码pom文件配置文件启动类启动服务 Eureka客户端A项目代码pom文件配置文件启动类服务A通过Eureka服务端发现服务B的注册信息启动服务调用test接口将服务B进行下线 Eureka 服务端的常用配置六、搭建Eureka集群代码示例三个Eureka服务端的配置文件配置运行之后的效果 Eureka客户端的配置文件配置服务运行之后的效果 总结 前言 目前公司项目使用的注册中心主要是Spring Cloud Alibaba的Nacos做的注册中心和配置中心。之前也是对Nacos的基本原理通过手写代码的方式进行了实现。出于对于Eureka的好奇所以就对Spring Cloud Neflix的Eureka进行理论学习和实践。 一、什么是Eureka Eureka是一个注册发现中心Eureka是Netflix公司开源的一个服务注册与发现的组件。 Eureka是Netflix贡献给Spring Cloud的一个框架Eureka和其他Netflix公司的服务组件一起被Spring Cloud社区整合为Spring Cloud Netflix模块。
二、为什么要有服务注册发现中心 在过去传统的架构中两个服务之间进行跨服务调用的常用方式是直接调用。但是随着系统的规模和复杂性的增加。直接调用的方式存在一些局限性所以就引入了服务注册发现中心来解决这些问题。 动态性和伸缩性在传统的直接调用中服务之间的连接通常是硬编码的方式。例如在A服务里面需要编码上B服务提供URL来发送调用请求。如果服务实例数量发生变化那么就需要手动修改代码或者配置来适应新的实例。 而服务注册和服务发现允许服务动态注册和注销从而使系统根据实际情况自动进行调整和适应变化。 高可用性和容错性在直接调用方式中如果某个服务实例不可用调用方可能会面临连接失败或错误。而服务注册和服务发现可以让调用方获取到多个可用的服务实例并后序结合Ribbon实现负载均衡从而提高系统的可用性和容错性。
三、Eureka的特性 服务注册服务实例启动时会向Eureka服务器注册自己的信息包括服务名称、IP地址、端口号等。这样Eureka服务器就能知道所有可用的服务实例。服务发现其他服务可以向Eureka服务器查询需要调用的服务的信息。Eureka服务器会返回可用的服务实例列表使得服务能够进行动态的负载均衡和故障转移。健康检查Eureka客户端定期向服务器发送心跳用于确认服务是否正常运行。如果某个服务实例超过了指定时间未发送心跳或标记自己为不健康状态Eureka服务器会将其从服务列表中剔除。服务的下线主动下线当项目关闭时会给Eureka服务端报告说明自己要下机了。 四、搭建Eureka单机版 整个系统有一台Eureka服务端有一台服务提供者B和一台服务消费者A都集成了Eureka客户端。 整体实现的效果是 当服务提供者B和服务消费者A启动时会将自己的注册信息注册到Eureka服务端中。 我们在服务消费者中根据服务提供者B的应用程序名通过Eureka客户端向Eureka服务端发送获取服务提供者B的注册信息。 4.1Eureka服务端 项目代码 pom文件 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.12.RELEASE/versionrelativePath/ !– lookup parent from repository –/parentgroupIdcom.wangwei/groupIdartifactIdeureka-server01/artifactIdversion0.0.1-SNAPSHOT/versionnameerueka-server01/namedescriptioneureka-server01/descriptionpropertiesjava.version8/java.versionspring-cloud.versionHoxton.SR12/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion\({spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project 配置文件 #单机版配置server:port: 8761 #eureka的默认端口 spring:application:name: eureka-server #应用名称 不要使用特殊字符eureka: #eureka的配置分为三类 server client 实例的 eurka-server即是服务端又是客户端server:eviction-interval-timer-in-ms: 10000 #服务端间隔多少毫秒做定期删除操作renewal-percent-threshold: 0.85 #续约百分比 超过85%的应用没有和你续约 那么eureka会保护服务 不会剔除任何一个服务instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔启动类 启动类上添加开启Eureka注册中心的功能 SpringBootApplication EnableEurekaServer//开启eureka的注册中心的功能 public class EruekaServer01Application {public static void main(String[] args) {SpringApplication.run(EruekaServer01Application.class, args);}} 启动项目查看效果 访问http://localhost:8761/ 可以看到已经将服务端进行了注册
Eureka客户端B 项目代码 pom文件 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.12.RELEASE/versionrelativePath/ !– lookup parent from repository –/parentgroupIdcom.wangwei/groupIdartifactIdeureka-client-b/artifactIdversion0.0.1-SNAPSHOT/versionnameeureka-client-b/namedescriptioneureka-client-b/descriptionpropertiesjava.version8/java.versionspring-cloud.versionHoxton.SR12/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion\({spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project 配置文件 server:port: 8081spring:application:name: eureka-client-beureka:client:service-url:defaultZone: http://localhost:8761/eurekaregister-with-eureka: true #设置为fasle 不往eureka-server注册fetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔启动类 添加开启Eureka客户端的注解 SpringBootApplication EnableEurekaClient public class EurekaClientBApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientBApplication.class, args);}}启动服务 可以看到eureka-client-b已经注册到了Eureka服务端上。 Eureka客户端A 项目代码 pom文件 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.12.RELEASE/versionrelativePath/ !– lookup parent from repository –/parentgroupIdcom.wangwei/groupIdartifactIdeureka-client-a/artifactIdversion0.0.1-SNAPSHOT/versionnameeureka-client-a/namedescriptioneureka-client-a/descriptionpropertiesjava.version8/java.versionspring-cloud.versionHoxton.SR12/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion\({spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project 配置文件 eureka:client:service-url: defaultZone: http://localhost:8761/eurekaregister-with-eureka: true #设置为fasle 不往eureka-server注册默认为truefetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔启动类 在启动类上添加开启Eureka客户端的注解 SpringBootApplication EnableEurekaClient public class EurekaClientAApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientAApplication.class, args);}} 服务A通过Eureka服务端发现服务B的注册信息 RestController public class DiscoveryController {Autowiredprivate DiscoveryClient discoveryClient;GetMapping(test/{serviceName})public String Discovery(PathVariable String serviceName){//这就是服务发现 通过服务应用名称 找到服务的具体信息ListServiceInstance instances discoveryClient.getInstances(serviceName);ServiceInstance serviceInstance instances.get(0);String ipserviceInstance.getHost();int portserviceInstance.getPort();System.out.println(ipport);return ipport;} }启动服务 可以看到客户端已经注册进去了。
调用test接口 通过调用test接口我们可以看到通过服务应用名称可以找到注册到Eureka上服务的具体信息。
将服务B进行下线 我们将服务B进行下线处理之后我们可以看到Eureka服务端已经将其剔除。
Eureka 服务端的常用配置 server:port: 8761 #eureka的默认端口 spring:application:name: eureka-server #应用名称 不要使用特殊字符eureka:client:service-url: #eureka服务端和客户端的交互地址不写的话默认是 8761集群的话地址用,隔开。defaultZone: http://peer2:8762/eureka,http://peer3:8763/eurekafetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己单击eureka一般关闭注册自己集群需要开启server:eviction-interval-timer-in-ms: 10000 #服务端间隔多少毫秒做定期删除操作清楚无效阶段的频率renewal-percent-threshold: 0.85 #续约百分比 超过85%的应用没有和你续约 那么eureka会保护服务 不会剔除任何一个服务enable-self-preservation: true #server的自我保护机制避免因为网络原因造成误剔除。instance: #实例的配置instance-id: \({eureka.instance.hostname}:\){spring.application.name}:\({server.port}hostname: peer1 #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: #表示eureka server至上一次收到client的心跳之后等待下一次心跳的超时时间六、搭建Eureka集群 按照Eureka服务端再新建两个Eureka服务端主要的区别在于配置文件中的配置。 通过下面图我们可以看出Eureka集群中的Eureka服务是彼此相互服务注册和互相服务发现。这样做的好处是如果我其中一台Eureka服务宕机了。我的集群能够立即的提供服务这是一种去中心化的思想。与常见的主从模式的集群不同如果主从模式中的集群中的主服务宕机那么是不能够立即提供完整的服务的它需要一定的选举机制再次选出一个主服务器之后才能提供完整的服务这期间有一段的时间整个集群是无法提供完整服务的。 代码示例 三个Eureka服务端的配置文件配置 #集群版server:port: 8761 #eureka的默认端口 spring:application:name: eureka-server #应用名称 不要使用特殊字符eureka:client:service-url: #eureka服务端和客户端的交互地址不写的话默认是 8761集群的话地址用,隔开。defaultZone: http://peer2:8762/eureka,http://peer3:8763/eurekafetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己单击eureka一般关闭注册自己集群需要开启registry-fetch-interval-seconds: 10 #定期拉取注册信息 为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消耗越大server:eviction-interval-timer-in-ms: 10000 #服务端间隔多少毫秒做定期删除操作清楚无效阶段的频率renewal-percent-threshold: 0.85 #续约百分比 超过85%的应用没有和你续约 那么eureka会保护服务 不会剔除任何一个服务enable-self-preservation: true #server的自我保护机制避免因为网络原因造成误剔除。instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: peer1 #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: #表示eureka server至上一次收到client的心跳之后等待下一次心跳#集群版server:port: 8762 spring:application:name: eureka-server #应用名称 不要使用特殊字符eureka:client:service-url: #eureka服务端和客户端的交互地址不写的话默认是 8761集群的话地址用,隔开。defaultZone: http://peer1:8761/eureka,http://peer3:8763/eurekafetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己单击eureka一般关闭注册自己集群需要开启registry-fetch-interval-seconds: 10 #定期拉取注册信息 为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消server:eviction-interval-timer-in-ms: 10000 #服务端间隔多少毫秒做定期删除操作清楚无效阶段的频率renewal-percent-threshold: 0.85 #续约百分比 超过85%的应用没有和你续约 那么eureka会保护服务 不会剔除任何一个服务enable-self-preservation: true #server的自我保护机制避免因为网络原因造成误剔除。instance: #实例的配置instance-id: \({eureka.instance.hostname}:\){spring.application.name}:\({server.port}hostname: peer2 #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: 5 #表示eureka server至上一次收到client的心跳之后等待下一次心跳#集群版server:port: 8763 spring:application:name: eureka-server #应用名称 不要使用特殊字符eureka:client:service-url: #eureka服务端和客户端的交互地址不写的话默认是 8761集群的话地址用,隔开。defaultZone: http://peer1:8761/eureka,http://peer2:8762/eurekafetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己单击eureka一般关闭注册自己集群需要开启registry-fetch-interval-seconds: 10 #定期拉取注册信息 为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消server:eviction-interval-timer-in-ms: 10000 #服务端间隔多少毫秒做定期删除操作清楚无效阶段的频率renewal-percent-threshold: 0.85 #续约百分比 超过85%的应用没有和你续约 那么eureka会保护服务 不会剔除任何一个服务enable-self-preservation: true #server的自我保护机制避免因为网络原因造成误剔除。instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: peer3 #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: 5 #表示eureka server至上一次收到client的心跳之后等待下一次心跳运行之后的效果 访问不同的Eureka服务地址可以看到都彼此进行注册
Eureka客户端的配置文件配置 #集群版server:port: 8080spring:application:name: eureka-client-aeureka:client:service-url:defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka #集群中的所有服务地址,这样可以保证如果有一个服务宕机还可以使用其他服务register-with-eureka: true #设置为fasle 不往eureka-server注册fetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #定期拉取注册信息 为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: \({eureka.instance.hostname}:\){spring.application.name}:\({server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: 5 #表示eureka server至上一次收到client的心跳之后等待下一次心跳##集群版 server:port: 8081spring:application:name: eureka-client-beureka:client:service-url:defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka #集群中的所有服务地址,这样可以保证如果有一个服务宕机还可以使用其他服务register-with-eureka: true #设置为fasle 不往eureka-server注册fetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #定期拉取注册信息 为了缓解服务列表的脏读问题时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: \){eureka.instance.hostname}:\({spring.application.name}:\){server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔lease-expiration-duration-in-seconds: 5 #表示eureka server至上一次收到client的心跳之后等待下一次心跳服务运行之后的效果 这里我们同样调用test接口进行测试。可以看到是可以获取服务B的注册信息的。
如果我们这是我们将集群中的Eureka服务下线一台依旧是可以提供服务的不会有任何影响 总结 以上就是Eureka的基本内容了Eureka提供的服务主要是服务注册和服务发现。分别介绍了单机版、集群版、以及Eureka的常用配置。 对于Eureka的配置其实大部分都是有默认配置的。我们可以在EurekaClientConfigBean、EurekaServerConfigBean、EurekaInstanceConfigBean这三个类中去进行了解。