springcloud 课程学习笔记1
springcloud学习记录
1.构建pom工程,概括各主要依赖的合作版本
2.建模主要步骤
- 建module
- 改pom
- 写yml
- 主启动
- 写业务
- 建表
- 写entity
- 写dao
- 写service
- 写controller
3.热部署
- 导依赖 DevTool
- 导插件 父类pom中插件
- 开启自动编译 --> compile中 选中ADBC四个选项
- shift + option + cmd + / 打开registry ; 选中 compile.automake.allow... 和 actionSystem.assertFocusAccess...
- 重启idea
4.工程重构
- 在重构工程中复制公用的包路径和实例类
- maven clean 和 install
- 改造其他module
- 删除共享代码
- 添加公用包的坐标
5.Eureka配置
- server端 注册
- 导包 spring-cloud-starter-netflix-eureka-server
- 写yml
- 写主启动 : @EnableEurekaServer //一定标注是服务器端 !!
- 测试 启动后访问 http://eureka7002.com:7002/ / 7001
- client 注册改造
- 导client包 spring-cloud-starter-netflix-eureka-client
- 主启动加注解 @EnableEurekaClient //作为服务注册方
- 改yml : 声明为服务提供方,注册到服务中心
- 集群eureka服务器环境: 互相注册,互相守望
- 新建类似cloud-eureka-server7002,pom同7001
- 修改hosts映射配置 /etc/hosts文件 --> 127.0.0.1 eureka7001.com / 127.0.0.1 eureka7002.com
- 修改yml文件 互相注册,互相守望
- 测试访问 访问测试 eureka7001.com/7001 / eureka7002.com/7002
- 服务消费者环境,只需增加defaultZone中的注册连接为两个服务器,再测试
- 集群服务提供者模块,复制创建cloud-provider-payment8002
- 注意修改yml中的端口号
- 在8002和8001 controller中的PaymentController 增加显示serverport的代码
- 测试
- 开启负载均衡
- 对于服务提供者是集群时,消费者访问连接只写服务注册名,至于哪台机器响应,不确定
- 同时要在服务提供者配置类ApplicationContextConfig中restful方法中开启@LoadBalanced //开启负载均衡注解
- 通过getRestTemplate开启负载均衡功能
- 完善主机信息的配置 acurator功能
- 在payment8001/8002的yml文件中,给eureka下加instanceid:payment8001/8002;这样注册主页上将显示为主机名
- 可通过访问http://localhost:8001/actuator/health看服务器是否假死
- 在payment8001/8002的yml文件中,给eureka下加instanceid:payment8001/8002;这样注册主页上将显示为主机名
- 服务发现功能
- 在服务提供者主程序加@EnableDiscoveryClient //启动服务发现
- 在PaymentController添加DiscoveryClient对象;//通过该对象并添加响应函数,可输出服务提供者的信息
- 自我保护机制:如发现与微服务暂时短线,不会立即删除服务,会保留服务注册信息 cap - ap 模式 保证可用性
- 手动关闭:
- 服务器端:在cloud-eureka-server7001/2端修改yml如下
eureka:
server:
enable-self-preservation: false 服务心跳没有了,及时删除注册信息; 默认为true 默认开启自我保护的
eviction-interval-timer-in-ms: 2000 心跳间隔时间缩小到2s- 客户端:cloud-provider-payment8001中yml改动:
eureka:
instance:
leased-renewal-interval-in-seconds: 30 客户端向服务器发送心跳的时间间隔 默认30s
leased-expiration-duration-in-seconds: 90 服务端收到最后一次心跳后等待的时间上限,默认90s;超时将删除服务
6. zookeeper
服务提供方 配置
- 建cloud-provider-payment8004
- 改pom: 引入 spring-cloud-starter-zookeeper-discovery
- 写yml :指定注册到zookeeper 服务器 !!== 注册为临时节点,没心跳就删除节点 为cp模式 保证一致性
- 主启动: @EnableDiscoveryClient //注解用于使用consul或zookepper作为注册中时注册服务
- 写业务: 写controlller打印 serverPort信息
服务消费方 配置
- 建cloud-consumerzk-order80
- 改pom 同上
- 写yml :指定注册到zookeeper 服务器的 地址
- 主启动: 同上
- 写业务
- 写config : 注册Bean:RestTemplate,通过改对象调用服务提供方的服务
- 配置写controlller打印 serverPort信息 ///注意PAYMENT_URL要和服务提供方注册名大小写一致
微服务模块
cloud-provider-payment8001
- 技术点
- sleuth+zipkin
- eureka-client 注册
- actuator
- 通过DiscoveryClient对象获取注册的服务的信息
- 整合druid和mybatis
cloud-consumer-order80
- 技术点
- 主启动加@RibbonClient指定访问的微服务名称和 负载均衡的规则(单独包路径定义)
- 配置负载均衡 在RestTemplate的@Bean上 加 @LoadBalanced
- 使用RestTemplate调用服务服务
cloud-eureka-server7001/7002
- eureka server集群配置,互相注册互相守望
cloud-provider-payment8004
- 注册为zookeeper服务
cloud-consumerzk-order80
- 注册为zookeeper服务,通过RestTemplate远程调用8004服务
浙公网安备 33010602011771号