ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 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下面开发的,兼容性最好;