Spring Cloud
Spring Cloud Eureka
Spring Cloud 微服务技术栈
Spring Cloud为开发人员提供了快速构建分布式系统中的一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)
中文文档:https://www.springcloud.cc/
Spring Cloud 中国社区:http://springcloud.cn/
SpringCloud微服务架构生态图
微服务架构技术栈 | 实现技术 |
---|---|
服务开发 | springboot,spring mvc |
服务配置 | config |
服务注册与发现 | eureka |
服务调用 | ribbon,feign |
服务路由 | zuul |
服务熔断 | hystrix |
服务全链路 监控 | sleuth+zipkin |
服务部署 | docker k8s |
**Spring Cloud Netflix包含的组件 **
- Eureka,服务注册和发现,它提供了一个服务注册中心、服务发现的客户端。
Eureka 架构
Eureka注册中心常用http rest接口
1、查看所有服务的注册列表:
get /eureka/apps
2、查看某一服务的注册列表:
get /eureka/apps/{appName}
3、查看具体服务实例
get /eureka/apps/{appName}/{instanceId}
4、暂时剔除某服务(隔几秒会重新注册上来)
delete /eureka/apps/{appName}
5、上下线服务
put /eureka/apps/{appName}/{instanceId}/status?value=UP(UP为上线,DOWN为下线)
官方文档:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
eureka源码下载:https://gitee.com/oldx/eureka
Eureka server源码
# EurekaServerAutoConfiguration.java
@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)# 获取配置的条件
@Import(EurekaServerInitializerConfiguration.class)#服务初始化配置
# EurekaServerConfig.java
PeerAwareInstanceRegistry 注册中心
InstanceRegistry
new RefreshablePeerEurekaNodes()初始化集群注册表)
EurekaServerContext服务上下文
# EurekaServerBootStrap.java启动类
registry.syncUp()服务同步
registry.openForTraffic()服务剔除
#EurekaServerInitializerConfiguration.java->SmartLifecycle.java->Lifecycle.java生命周期
Eureka Client源码
# @EurekaDiscoveryClient
#EnableDiscoveryClientImportSelector.java
#EurekaClientAutoConfiguration.java (配置类)
@ConditionalOnClass(EurekaClientConfig.class)]
EurekaInstanceConfigBean 实例配置