一、简介: Eureka是由Netflix公司开源的一款提供服务注册和发现的产品。因此,在添加依赖时,会有NetFlix。 该组件管理各种的服务功能:注册、 发现、熔断、负载、降级等。 Eureka采用的是基于C/S的设计架构。 Eureka由两部分组成(Server/Client):Eureka服务器和Eureka客户端。其中服务器可以用作服务注册服务器。而客户端是一个Java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。
由上图我们可以简单的看到Eureka组件的架构图,主要由三部分组成: Eureka Server:提供服务注册和发现 Service Provider:服务提供方、将自身服务注册到Eureka,从而使消费者可以找到 Service Consumer: 服务消费方 从Eureka获取注册服务列表,从而能够消费服务。 下面演示入门案例第一个案例: 1.创建module:注意创建的方式为:Spring Initializr创建springBoot项目(快速入门创建,也可以使用maven格式)
可以通过官网下载,也可以通过自定义的路径(阿里云https://start.aliyun.com)下载

Group:可以是组织域名的倒写 Artifact:项目名称 Type:我们选择使用maven项目 Lanagure:选用Java语言进行开发 Packaging:打包方式,可以是jar包也可以是war包 Java Version:Java版本 注意此时的项目中的报名需要修改 点击next--选择需要添加的依赖,首先是WEb-->spring web --> spring cloud discovery-->Eureka-->Eureka Server 中间右上角的SpringBoot版本号选择合适的,我选择的是2.7.13(之后还会修改) 2.修改src-->main-->resources-->application.properties:- server.port=9100
- spring.application.name=eureka-server
- #设置注册中心得地址
- eureka.instance.hostname=localhost
- #配置自己不能想自己注册
- eureka.client.register-with-eureka=false
- #不需要检索服务 主要是维护服务
- eureka.client.fetch-registry=false
- #注册中心地址
- #eureka.client.service-url.defaultZone = http:${eureka.instance.hostname}:${server.port}/eureka
- eureka.client.service-url.defaultZone=http://127.0.0.1:9100/eureka
复制代码 3.修改启动类Application.java - @SpringBootApplication
- @EnableEurekaServer//启用Eureka
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码 添加注解开启Eureka服务此时便可以运行,访问http://localhost:9100得到结果如下图:
4.以相同的步骤创建服务提供者 spring-cloudeureka-provider的module 但在选择依赖时的点击next--选择需要添加的依赖,首先是WEb-->spring web spring cloud discovery-->Eureka Discovery Client 4.1修改pom文件,修改版本: 4.2 修改配置文件:- server.port=8083
- #应用名 之后也会是注册的服务名
- spring.application.name=eureka-provider
- #注册服务的地址
- server.servlet.context-path=/02-spring-cloud-provider
-
- #配置注册中心地址 此时为客户端
- eureka.client.service-url.defaultZone=http://localhost:9100/eureka
复制代码 4.3创建控制器,模拟接收- @RestController
- public class TestController {
- @RequestMapping("/test")
- public String test(){
- return "这是demo2得provider 端口号是8083";
- }
- }
复制代码 4.4修改启动类,添加注解,允许启动、- @SpringBootApplication
- @EnableEurekaClient
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码 4.5测试启动: 访问:http://localhost:9100
创建服务成功。访问:localhost:8083/02-spring-cloud-provider/test 也可以正常显示 5.创建消费者module:spring-cloud-eureka-consumer: 5.1与provider创建类型相同。 5.2修改pom文件 5.3修改配置文件:- #端口号
- server.port=8084
- spring.application.name=server-consumer
- server.servlet.context-path=/02-spring-cloud-consumer
- #配置注册中心地址
- eureka.client.service-url.defaultZone=http://localhost:9100/eureka
复制代码 5.4添加config.RestTemplateConfig类: RestTemplate主要是说明spring支持的Http请求,符合restful风格的,他可以接收常见的Rest请求方法的模板。 使用该模板,我们能就可以访问到其请求体信息。- @Configuration
- public class RestTemplateConfig {
- @Bean
- public RestTemplate restTemplate(){
- return new RestTemplate();
- }
复制代码 5.5添加controller.TestController控制器来测试:- @RestController
- public class TestController {
-
- @Autowired
- private RestTemplate restTemplate;
-
- @RequestMapping("/test")
- public String test(){
- ResponseEntity<String> result=restTemplate.getForEntity("http://SERVER-PROVIDER/test",String.class);
- return result.getBody();
-
- }
- }
复制代码 5.6修改启动类:- @SpringBootApplication
- @EnableEurekaClient
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码 5.7启动: 5.8测试: 访问:http://localhost:9100
访问:http://localhost:8084/test
第二个案例:集群: 在分布式系统中通常需要多台server来进行服务的注册,这样才能保证在大容量下可以进行正常的服务。在第一个案例的基础上继续进行展示: 6,创建server 端口号为9200, 使用集群可能需要修改系统的配置文件:C:\Windows\System32\drivers\etc\host
6.1修改9100的配置文件(也就是第一个案例中的Server)- server.port=9100
- eureka.instance.hostname=eureka9100
- eureka.client.fetch-registry=false
- eureka.client.register-with-eureka=false
- eureka.client.service-url.defaultZone=http://eureka9200:9200/eureka
- #禁用自我保护机制
- # eureka.server.enable-self-preservation=false
复制代码 6.2创建9200的module修改其配置文件:- server.port=9200
- eureka.instance.hostname=eureka9200
- eureka.client.fetch-registry=false
- eureka.client.register-with-eureka=false
- eureka.client.service-url.defaultZone=http://eureka9100:9100/eureka
复制代码 访问即可。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |