- 订单服务源码
https://github.com/Wasabi1234/SpringCloud_OrderDemo - 商品服务源码
https://github.com/Wasabi1234/SpringCloud_ProductDemo
0 分布式下服务注册的地位和原理
0.1 分布式系统中为什么需要服务发现
A 类比青楼中的嫖客, B 类比青楼女子,注册中心呢就相当于青楼中的妈咪
一般 嫖客服务一来,就肯定直接点名春花还是秋月呀,直接问妈咪要花魁就行
0.2 服务发现的两种方式
◆ 客户端发现
- Eureka
◆ 服务端发现
- Nginx
- Zookeeper
- Kubernetes
我们这里使用Eureka
◆ 基于Netflix Eureka做了二次封装
◆ 两个组件组成:
- Eureka Server注册中心
- Eureka Client服务注册
1 启动Eureka服务注册表
首先需要一个Eureka服务注册表。
使用Spring Cloud的@EnableEurekaServer来建立注册表,其他应用程序可以与之通信。
这是一个常规的Spring Boot应用程序,其中添加了一个注解(@EnableEurekaServer)以启用服务注册表。
使用@EnableEurekaServer
就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用
- 直接运行成功如下
注册表启动时,它将抱怨(带有stacktrace)注册表没有可连接的副本节点。在生产环境中,需要多个注册表实例。
默认情况下,注册表还会尝试自行注册。
在本地使用此注册表时,最好将此注册表放在单独的端口上。
但不断报异常,why?
- 这是因为该应用虽然是 Server 端,但也同时是 Client 端,也需要一个注册中心将自己注册进去
为消除其异常,修改下配置 - 配置需要注册的地址,也就是往自己身上注册
通过观察源码,知道其实是一个 map, 所以配置如下
启动仍旧报错,其实正常问题,因为服务端自己又是 Server, 又是 Client, 服务端未启动完成时,客户端肯定是无法找到服务端的
但是 eureka 的服务端/客户端采用心跳通信方式
- 可看到地址已随配置被改变
- 接下来配置实例名
但是该应用本身就是个注册中心,不需要将其显示在注册实例中,通过以下配置
为防止冲突,将端口号回改为默认












