分布式是多节点的
各节点通过消息通信
简单的微服务架构
微服务架构的基础框架/组件
仔细观察
两大派系
SpringCloud是什么
新建项目
使用@EnableEurekaServer
就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用
直接运行成功如下
但是不断报异常,why?
这是因为该应用虽然是 Server 端,但也同时是 Client 端,也需要一个注册中心将自己注册进去
为消除其异常,修改下配置
配置需要注册的地址,也就是往自己身上注册
通过观察源码,知道其实是一个 map, 所以配置如下
启动仍旧报错,其实正常问题,因为服务端自己又是 Server, 又是 Client, 服务端未启动完成时,客户端肯定是无法找到服务端的
但是 eureka 的服务端/客户端采用心跳通信方式
可看到地址已随配置被改变
接下来配置实例名
实例名被修改成功
但是该应用本身就是个注册中心,不需要将其显示在注册实例中,通过以下配置
为防止冲突,将端口号回改为默认
为避免每次手动启动,将应用打成 war 包(jar)
通过 java 命令启动
启动成功效果
Mac 下 Ctrl+C 退出服务
后台执行
查看其相关进程信息
如此该应用就方便了我们,不需要每次都去手动启动应用,在后台会重启,若想杀死进程直接 kill
@EnableDiscoveryClient
注解
这通过META-INF/spring.factories
查找DiscoveryClient
接口的实现
Discovery Client的实现将在org.springframework.cloud.client.discovery.EnableDiscoveryClient
键下的spring.factories
中添加一个配置类。
DiscoveryClient
实现的示例是Spring Cloud Netflix Eureka,Spring Cloud Consul发现和Spring Cloud Zookeeper发现。默认情况下,DiscoveryClient
的实现将使用远程发现服务器自动注册本地Spring Boot服务器。可以通过在@EnableDiscoveryClient
中设置autoRegister=false
来禁用此功能。
更多内容请关注JavaEdge公众号