黄石网站建设多少钱,做网站有什么注意事项,小程序源码是什么意思,教师做爰网站1、Eureka 简介
Eureka 是Spring Cloud Netflix 微服务套件中的一部分#xff0c; 它基于Netflix Eureka 做了二次封装#xff0c; 主要负责完成微服务架构中的服务治理功能。我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理…1、Eureka 简介
Eureka 是Spring Cloud Netflix 微服务套件中的一部分 它基于Netflix Eureka 做了二次封装 主要负责完成微服务架构中的服务治理功能。我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理体系进行整合。
Eureka包含两个组件Eureka Server注册中心和Eureka Client 微服务。
Eureka Server提供服务注册服务。
Eureka Client是一个java客户端用来简化与Eureka Server的交互、客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。 2、搭建 SpringCloud 父工程 按照下图配置即可 这里不选择任何依赖。 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/modelVersionpackagingpom/packagingmodulesmoduleEurekaServer01/module/modulesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.8.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.helloparent/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project删除如下这些文件夹没有用直接删除即可必须保留 pom.xml。 3、 创建 Maven 工程注册中心 Eureka pom文件如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIddemo/artifactIdgroupIdcom.helloparent/groupIdversion0.0.1-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdEurekaServer01/artifactIddependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency/dependencies/project
在新建的maven项目下面 src--main--resources建立一个application.yml文件
#内置的tomcat服务启动监听端口号
server:port: 8888
#应用名称
spring:application:name: EurekaServer01
#EurekaServer配置
eureka:instance:hostname: localhostserver:#关闭自我保护模式缺省为打开enable-self-preservation: false#扫描失效服务的间隔时间缺省为60*1000mseviction-interval-timer-in-ms: 1000client:register-with-eureka: false #此EurekaServer不在注册到其他的注册中心fetch-registry: false #不在从其他中心中心拉取服务器信息service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #注册中心访问地址
在main下面创建文件夹及文件注意main函数文件名。
package com.eureka.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;SpringBootApplication
EnableEurekaServer
public class EurekaServer01Start {public static void main(String[] args) {SpringApplication.run(EurekaServer01Start.class, args);}
}
运行查看结果。 主界面中
system status 为系统信息
General Info 为一般信息
Instances currently registered with Eureka 为注册到注册中心的所有微服务列表 4、创建第二个Maven 项目接口
创建文件夹及Service,如下图。 编写接口
package com.HelloInterface01.demo.service;public interface HelloService {public String sayHello();}
注释掉 父工程里面的相关代码
?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/modelVersionpackagingpom/packagingmodulesmoduleEurekaServer01/modulemoduleHelloInterface01/module/modulesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.8.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.helloparent/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement!-- build--
!-- plugins--
!-- plugin--
!-- groupIdorg.springframework.boot/groupId--
!-- artifactIdspring-boot-maven-plugin/artifactId--
!-- /plugin--
!-- /plugins--
!-- /build--/project5、服务提供者创建
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIddemo/artifactIdgroupIdcom.helloparent/groupIdversion0.0.1-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdHelloProvide01/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdcom.helloparent/groupIdartifactIdHelloInterface01/artifactIdversion0.0.1-SNAPSHOT/version/dependency/dependencies/project
在resources文件夹下面添加一个yml。
spring:application:name: HelloProvider01
server:port: 9001
eureka:client:service-url:defaultZone: http://localhost:8888/eureka
创建如下文件夹及实现类 package com.HelloProvide.demo.service.Impl;import com.HelloInterface01.demo.service.HelloService;
import org.springframework.stereotype.Service;Service
public class HelloServiceImpl implements HelloService {Overridepublic String sayHello() {return hello Eureka!;}
}
在创建一个controller 文件夹及文件
package com.HelloProvide.demo.controller;import com.HelloInterface01.demo.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class HelloController {Autowiredprivate HelloService helloService;GetMapping(/hello)public String sayHello(){return helloService.sayHello();}
} 编写启动类。
package com.HelloProvide.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;SpringBootApplication
EnableDiscoveryClient
public class HelloProvider01Start {public static void main(String[] args) {SpringApplication.run(HelloProvider01Start.class,args);}
} 服务已经注册上去了。 6、服务调用者创建 修改pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIddemo/artifactIdgroupIdcom.helloparent/groupIdversion0.0.1-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdHelloConsumer01/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdcom.helloparent/groupIdartifactIdHelloInterface01/artifactIdversion0.0.1-SNAPSHOT/version/dependency/dependencies/project
编写yml配置文件
spring:application:name: helloConsumer01
server:port: 9002eureka:client:service-url:defaultZone: http://localhost:8888/eureka
编写启动类 package com.HelloConsumer.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;SpringBootApplication
EnableDiscoveryClientpublic class HelloConsumer01Start {Beanpublic RestTemplate restTemplate(){return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(HelloConsumer01Start.class,args);}
}实现类代码注意导包别错误。
package com.HelloConsumer.demo.Service.impl;import com.HelloInterface01.demo.service.HelloService;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.util.List;Service
public class HelloServiceImpl implements HelloService {Autowiredprivate DiscoveryClient discoveryClient; //是一个服务查询工具可以连接到EurekaServer根据服务名称去查询服务信息注意别导错包了Autowiredprivate RestTemplate restTemplate; //调用rest风格接口工具类//从EurekaServer获取对应服务的地址和端口public String getServerInfo() {ListServiceInstance instanceList discoveryClient.getInstances(HELLOPROVIDER01);if (instanceList ! null instanceList.size() 0) {ServiceInstance serviceInstance instanceList.get(0);//获取对应服务的主机地址String host serviceInstance.getHost();//获取对应服务端口号int port serviceInstance.getPort();return http:// host : port;}return null;}Overridepublic String sayHello() {ResponseEntityString responseEntity restTemplate.getForEntity(getServerInfo() /hello, String.class);String body responseEntity.getBody();System.out.println(调用远程服务返回值: body);return body;}
}
编写controller
package com.HelloConsumer.demo.controller;import com.HelloInterface01.demo.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestControllerpublic class HelloControllerConsumer {Autowiredprivate HelloService helloService;RequestMapping(/testHello)public String sayHello(){return helloService.sayHello();}
}启动服务注册中心成功。 7、进行测试
http://localhost:9002/testHello