### 1微服务概述
微服务:独立运行于自己的进程;一系列独立微服务构成系统;每个服务独立开发;服务之间轻量级通信;使用不同的语言和数据存储技术;全自动部署;
优点:易于开发维护;单个服务启动快;技术栈不受限制;按需伸缩;
缺点:运维成本高;分布式固有复杂性;接口调整成本高;重复劳动;
### 2开始spring cloud
spring initializr快速构建项目;
YAML:Yet Another Markup Language或YAML Ain't a Markup Language
web项目pom:spring-boot-starter-web
监控端点pom:spring-boot-starter-actuator/执行机构/,需要配置management.security.enabled=false才可以全部显示内容
### 3微服务注册与发现Eureka/我发现了/
Eureka server pom: spring-cloud-starter-eureka-server,启动类上面加@EnableEurekaServer
Eureka Server client pom: spring-cloud-starter-eureka,启动类上面加@EnableDiscoveryClient或者@EnableEurekaClient
Eureka Server HA: server搭建成为集群,互相备份;client注册到集群上;
Eureka Sever认证pom:spring-boot-starter-security,security.user.name/password设置用户名密码;客户端在eureka.client.serviceUrl.defaultZone: http://user:pass@ip:port/eureka/设置;
可以使用curl或者PostMan进行Eureka服务的注册或者删除;
### 4客户端负载均衡Ribbon/绶带/
Ribbon pom:spring-cloud-starter-ribbon,spring-cloud-starter-eureka包含了这个ribbon,有了eureka就不用写ribbon了;在RestTemplate上面添加@LoadBalanced;代码中请求地址修改为http://microservice-provider-user/;
可以修改Ribbon的负载策略,自己写java或者配置方式;
可以脱离Eureka使用Ribbon,只pom:spring-cloud-starter-ribbon, 在yml中配置microservice-provider-user.ribbon.listOfServers:ip:port1, ip:port2;
### 5声明式Rest调用Feign/装作/
声明式、模版化的HTTP客户端,Feign pom:spring-cloud-starter-feign, 创建一个接口,使用@FeignClient注解,启动类增加@EnableFeignClients;
多参数GET请求,方法1:URL有几个参数,Feign接口中就有几个参数,用@RequestParam注解装饰;方法2:使用Map作为参数;
多参数POST请求,@RequestBody User user;
### 6容错Hystrix/猬/
基础服务故障导致级联故障的现象称为雪崩效应。hystrix pom: spring-cloud-starter-hystrix, 启动类增加@EnableCircuitBreaker或者@EnableHystrix, 在方法上面添加@HystrixCommand(fallbackMethod="methodFallback");执行回退不代表断路器已经打开,短时多次访问之后,使用actuator可以查看断路器状态为打开;
hystrix监控:在/hystrix.stream可以监控状态;
hystrix dashboard pom: spring-cloud-starter-hystrix-dashboard,在启动后的界面输入需要监控的http://ip:port/hystrix.stream, 图形化查看状态;
turbine 聚合监控数据,turbine pom: spring-cloud-starter-turbine, 启动类添加@EnableTurbine;
使用RabbitMQ进行消息收集,搭建RabbitMQ环境,rabbitmq-plugins enable rabbitmq management 可以图形化界面管理;微服务端pom:spring-cloud-netflix-hystrix-stream, spring-cloud-starter-stream-rabbit; turbine 端pom: spring-cloud-starter-turbine-stream, spring-cloud-starter-stream-rabbit;
### 7网关Zuul/祖鲁/
@EnableZuulProxy,spring-cloud-starter-zuul,已经包含了spring-boot-starter-actuator,在application.yml中进行management.security.enable=false,可以查看routes/配置;
### 11Docker
Docker是一个开源的容器引擎。将基础设施当做程序一样进行管理。
Docker Daemon, Docker Client, Docker Image, Docker Container, Registry.
Docker是在Ubuntu下面开发的,兼容性最好;