网站首页 > java教程 正文
Eureka(注册中心)
eureka为服务注册,分为服务端和客户端,客户端注册进服务端,服务端可配置集群互相守望。服务端不处理业务,只负责服务注册,客户端才负责数据处理 ;服务者和消费者都需要注册。在openfeign之后都是用openfeign访问。
关键注解
启动类
@EnableEurekaServer // 服务端注册
@EnableEurekaClient // 消费端注册
@EnableDiscoveryClient // 可获取当前服务的相关信息(可选)
一、服务端
pom:
导入eureka服务器端相关包
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
yml:
eureka服务端相关配置
# 7001 eureka服务
server:
port: 7001
spring:
application:
name: cloud-eureka-service
eureka:
instance:
# eureka服务端的实例名称
# 单机 hostname: localhost
# 输入这个地址就能看到,已注册的服务信息
hostname: eureka7001.com
client:
# false表示不向注册中心注册自己,服务端一般不需要注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
# 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
# 单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 相互注册,用于集群
defaultZone: http://eureka7002.com:7002/eureka
# 7002 eureka服务
server:
port: 7002
spring:
application:
name: cloud-eureka-service
eureka:
instance:
# eureka服务端的实例名称
# 单机 hostname: localhost
hostname: eureka7002.com
client:
# false表示不向注册中心注册自己,服务端一般不需要注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
# 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
# 单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 相互注册,用于集群
defaultZone: http://eureka7001.com:7001/eureka
入口类:
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7001.class, args);
}
}
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7002 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7002.class, args);
}
}
二、消费端
pom:
导入客户端相关包
<!--eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
yml:
server:
port: 8001
spring:
application:
# 为访问的服务名
name: cloud-payment-service
datasource:
# 当前数据源操作类型
type: com.alibaba.druid.pool.DruidDataSource
# mysql驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: 123456
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
# defaultZone: http://localhost:7001/eureka
# 集群版,注册进上面的服务里面,名称对应
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8001
# 访问路径可以显示ip地址
prefer-ip-address: true
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.atguigu.springcloud.entities
两个客户端服务是为了负载均衡
server:
port: 8002
spring:
application:
name: cloud-payment-service
datasource:
# 当前数据源操作类型
type: com.alibaba.druid.pool.DruidDataSource
# mysql驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: 123456
# zipkin/sleuth链路跟踪
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
# 采样值介于0到1之间,1表示全部采集
probability: 1
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
# defaultZone: http://localhost:7001/eureka
# 集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
# eureka 注册显示的名称
instance-id: payment8002
# 访问路径可以显示ip地址
prefer-ip-address: true
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.atguigu.springcloud.entities
启动类:
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain801 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain801.class, args);
}
}
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain802 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain802.class, args);
}
}
三、访问服务
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced // 赋予负载均衡
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
@RestController
@Slf4j
public class OrderController {
// 只有一个服务时
// public static final String PAYMENT_URL = "http://localhost:8001";
// 多服务,CLOUD-PAYMENT-SERVICE为上方配置的服务名称
public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
// /payment/get为eureka注册的客户端服务接口
// CommonResult封装类
return restTemplate.getForObject(PAYMENT_URL + "/payment/get/"+id, CommonResult.class);
}
}
私信666领取资料
猜你喜欢
- 2024-10-23 阿里蚂蚁金服中间件(Java 4轮面试题含答案):Re...
- 2024-10-23 阿里Java60万年薪(4面真题):线程同步+数据库锁+中间件等
- 2024-10-23 面试分享:中间件RabbitMQ面试专题及Java架构知识点整理!
- 2024-10-23 吐血总结了各个中间件是如何实现持久化的
- 2024-10-23 学习分享之《大型网站系统与Java中间件实践》
- 2024-10-23 Arquillian:针对Java中间件的集成测试和功能性测试平台
- 2024-10-23 java数据库读写分离-数据库中间件DBProxy
- 2024-10-23 java面试中,面试官:如何处理消息中间件(MQ)消息丢失问题?
- 2024-10-23 阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
- 2024-10-23 Java中间件-ehcache(Java中间件错误整理)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)