2019独角兽企业重金招聘Python工程师标准>>>
1. 概念
1.1 springCloud是什么?
springCloud是一种微服务治理框架:
1.2 springCloud优势:
2.服务治理SpringCloud Eureka
2.1 什么是服务治理
在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册===》服务管理
2.2 服务注册中心
概念: 提供服务治理功能,用来实现各个微服务实例的自动注册与发现
2.2 服务注册
有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上
2.3 服务发现
另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址
2.4 搭建eureka注册中心
搭建eureka服务器
重要:
###服务端口号 server: port: 8000 ###eureka 基本信息配置 eureka: instance: ###注册到eurekaip地址 hostname: 127.0.0.1 client: serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ ###因为自己是为注册中心,不需要自己注册自己 register-with-eureka: false ###因为自己是为注册中心,不需要检索服务 fetch-registry: false
在驱动器类上添加
@EnableEurekaServer
完成的效果:
2.5 编写 服务提供者
删除.proties文件 使用yml(个人习惯)
###服务启动端口号 server: port: 8100 ###服务名称(服务注册到eureka名称) spring: application: name: app-provide ###服务注册到eureka地址 eureka: client: service-url: defaultZone: http://localhost:8000/eureka ###因为该应用为注册中心,不会注册自己 register-with-eureka: true ###是否需要从eureka上获取注册信息 fetch-registry: true
编写 服务端代码
效果:
2.6 服务消费
方式一:直接使用httpClient调用 (不建议 越过了注册中心 )
方式二:rest方式调用服务
2.6.1 rest方式调用服务
###服务启动端口号 server: port: 8200 ###服务名称(服务注册到eureka名称) spring: application: name: app-customer ###服务注册到eureka地址 eureka: client: service-url: defaultZone: http://localhost:8000/eureka ###因为该应用为注册中心,不会注册自己 register-with-eureka: true ###是否需要从eureka上获取注册信息 fetch-registry: true
消费者类
效果:
2.7 代码分享
码云:
https://gitee.com/Luck_Me/ideaspring_cloudintroduction/tree/master
百度云:
链接:https://pan.baidu.com/s/128iaKCCrfxvqgZeLBBQ0_Q
提取码:0ffs
2.8 @LoadBalanced实现本地负载均衡
多配置几个服务提供者 @LoadBalanced会帮助我们自动实现本地负载均衡(默认轮询方式 )
效果:这里只是配置2个 其实3个及以上一模一样(测试过)
实现过程:
2.9 eureka注册中心 集群
3个及以上的eureka集群效果
实现过程:(记得每一个服务中 都要改持有对方的信息)
###服务端口号 server: port: 8001 ###eureka 基本信息配置 eureka: instance: ###注册到eurekaip地址 hostname: 127.0.0.1 client: serviceUrl: defaultZone: http://${eureka.instance.hostname}:8000/eureka/ ###因为自己是为注册中心,不需要自己注册自己 register-with-eureka: true ###因为自己是为注册中心,不需要检索服务 fetch-registry: true
2.10 客户端调用Eureka2.0集群环境
效果:
测试宕机后的效果:
实现过程:
代码(要与上面分享的进行区分 这个是用了各种集群了):
码云:
https://gitee.com/Luck_Me/ideaspring_cloudintroduction/tree/master
百度云:
链接:https://pan.baidu.com/s/128iaKCCrfxvqgZeLBBQ0_Q
提取码:0ffs