项目修改计划
1.创建parent父项目,方便其他pom继承 (y)
2.集群2个注册中心(注意host修改) (y)
3.集群2个service(p1多复制几个再注册就好) (y)
4.用openFeign做负载均衡 (n)
这一项项服务就是微服务,springcloud的作用就是调度与监控这些服务。
springcloud的版本按照A-Z命名
springcloud与springboot有对应的版本限制
(springcloud推荐的springboot版本与springboot对应的springcloud版本不一样,取交集)
controller调service调dao
浏览器对post支持不好
不同微服务之间互相调用可以通过resttemplate绑定url来访问(或者用@Feign)
公共的部分应该抽取出来做一个模块,然后用mavenclean与install来引入调用
约定大于配置,在正式编码之前应当先确定好规范。
eureka注册
服务注册
@EnableEurekaClient
修改yml
server:
port: 8001
spring:
application:
name: cloud-provider-hystrix-payment
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
#defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
defaultZone: http://eureka7001.com:7001/eureka
成功注册
集群注册
集群原理:互相注册,相互守望
最大的cloud下面的pom.xml会写入所有的微服务,相当于父工程
集群搭建
C:\Windows\System32\drivers\etc
目的是为了让多个端口映射同一个地址
集群除了端口别的都一样
集群配置很简单,只需要在yml里对eureka进行对应的注册即可
@EnableDiscoveryClient
允许通过restful的方式自定义服务简介并返回,相当于了解服务
eureka自我保护
C是指多个微服务之间的数据同步
P是必须满足的
eureka自带ribbon
ribbon改变调度策略
不加ribbonclient默认轮询
feign用在消费端
openfeign默认最长等待时间1s
客户端和服务端都可以使用,调用别人的服务同时自己做判断兜底。
核心是三个状态,开启,关闭,半开。其中半开是不断尝试能否正常运行与恢复。
多次错误(自定义什么是错误)后熔断,在慢慢恢复(意味着恢复过程中正常的也不能使用)。
需要注意的是熔断期间调用的是fallback也就是服务降级的处理逻辑。
加一个@globaltransaction改一些配置就可以了(分组,数据库ip端口号,密码)
配置文件的持久化很多解决方式是内嵌了一个数据库
UUID是JDK自带的可以保证唯一性,缺点是无序,不利于索引且过长不利于存储。
eureka搭建心得
1.版本第一,确保springcloud与springboot版本对应
2.eureka核心是service与client两者都可以进行集群,service负责管理,不需要注册自己,client需要注册自己
3.注意在sbmain上@eurekaClient与@eurekaService
4.编写对应的yml映射端口ip即可。
集群配置心得
service
单一配置可以用localhost,多个集群映射一个ip复杂的方法是建立虚拟机,简单的方法是改host映射,使得127.0.0.1同时映射多个ip
配置多个service会互相注册,最后再将client注册进多个service即可
defaultZone的名字映射:应当与修改配置文件的映射相对应,defaultZone全都一样
client
idea项目添加,在idea中cv然后修改artifactId并添加到父pom的中即可
在idea中rename com.**.**选择in current即可全部重命名
hystrix
在service中添加依赖于注解编写异常调用函数即可
@HystrixCommand(fallbackMethod = “paymentInfoTimeOutHandler”, commandProperties = {
@HystrixProperty(name = “execution.isolation.thread.timeoutInMilliseconds”, value = “5000”)
})
public String paymentInfoTimeOut(Integer id) {