Spring-Boot+微服务
Java-web: 开发MVC三层架构网站
SSM: 框架,简化开发流程,配置较为复杂 -> war包 在tomcat中和运行
Spring-Boot + 微服务架构 :
- jar包
- 内嵌tomcat
- yaml 配置
- 数据库 Druid
- 核心:自动装配原理
- 分布式开发 : Dubbo (RPC) + zookeeper
- swagger:接口文档
- 任务调度:Spring-Boot
- Spring-Security : Shiro
Spring-Cloud
- 微服务
- Spring-Cloud入门
- Restful
- Eureka分布式
- 负载均衡 Nginx (Ribbon/ Feign)
- HyStrix 服务熔断机制
- Zuul 路由网关
- Spring-Cloud Config: git
Linux + JVM
Spring 解决企业级应用开发的复杂性而创建,让其
IOC + AOP + DI(依赖注入)
通过切片和模板减少样式代码
Spring-Boot
约定大于控制,几行代码开发一个http接口
框架底层的重要性>框架本身
也就是说目标就是 用框架写个项目 然后深入到框架底层,不用开发
微服务
- 业务拆分: service ===》 变成模块
- springMVC + Controller ==》 接口
- 服务之间可以通过RPC 或者 Http通信
- ORM =》 MVC =》 RPC =》 SOA(弹性计算)
- 将数据库访问和web访问等功能都放到一个war包里面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqVpqEMD-1611971741319)(%E5%BE%AE%E6%9C%8D%E5%8A%A1.assets/1609841471333.png)]
Websocket, web, streaming, restfulAPIs
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F75mSWTl-1611971741323)(%E5%BE%AE%E6%9C%8D%E5%8A%A1.assets/1609841538881.png)]
透过 API 网关访问
breaker dashboard 熔断机制
Eureka 服务注册与发现
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1FLmPCa-1611971741327)(微服务.assets/1611404887954.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvu2r93Z-1611971741330)(微服务.assets/1611404906850.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PcsI50IZ-1611971741332)(微服务.assets/1611404950738.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAk7OnrA-1611971741334)(微服务.assets/1611404973784.png)]
-
注册中心 _____服务端
-
导入依赖
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRI4siVW-1611971741335)(微服务.assets/1611405078745.png)]
-
编写配置文件
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukKah1z6-1611971741336)(微服务.assets/1611405340529.png)]
集群的话
defaultZone: http://eureka7002.com:7002/eureka, http://eureka7003.com:7003/eureka
-
-
编写注册启动类
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtNERC2H-1611971741337)(微服务.assets/1611405418733.png)]
-
-
服务提供者 (客户端)
-
注册地址是server的defaultZone: http://localhost:7001/eureka/
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3HaCu5a-1611971741339)(微服务.assets/1611405674814.png)]
-
注意这里是@EnabkeEurekaClient
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YTXbgF2-1611971741342)(微服务.assets/1611405756854.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XD7x3Zg-1611971741343)(微服务.assets/1611406305009.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LO3hjLx1-1611971741345)(微服务.assets/1611406736464.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzoiy1qR-1611971741346)(微服务.assets/1611406758163.png)]
-
打印出所有相关的Restful接口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uos5Ivxa-1611971741347)(微服务.assets/1611406575478.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUGn33r7-1611971741348)(微服务.assets/1611406602366.png)]
-
-
服务集群
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4AIjl1s-1611971741349)(微服务.assets/1611406975923.png)]
-
CAP原理
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qM964gL6-1611971741351)(微服务.assets/1611407377831.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSDtPYac-1611971741352)(微服务.assets/1611407395019.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FHzTsiw3-1611971741354)(微服务.assets/1611407420923.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAHXIjKz-1611971741354)(微服务.assets/1611407499939.png)]
Ribbon
-
负载均衡 LoadBalance
- epoll
- random
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfpH7Qij-1611971741356)(微服务.assets/1611410333611.png)]
-
LVS 服务器
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUBAdIFM-1611971741357)(微服务.assets/1611410542738.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mw5wAd4G-1611971741358)(微服务.assets/1611452029091.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ypifI7Me-1611971741359)(微服务.assets/1611452487651.png)]
-
@Configuration class RibbonConfigBean{ @Bean @LoadBalance public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
Feign 负载均衡
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMETHMad-1611971741360)(微服务.assets/1611454679909.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3K2k4d3-1611971741360)(微服务.assets/1611454687371.png)]
Hystrix
-
服务熔断
-
服务监控
-
Dashboard 流监控
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNiNH0fs-1611971741362)(微服务.assets/1611455388107.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPqOooFr-1611971741362)(微服务.assets/1611455546164.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBdCWbTu-1611971741363)(微服务.assets/1611455609283.png)]
-
controller [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpwIFcel-1611971741364)(微服务.assets/1611456516922.png)]
-
Hystrix
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eltOpci8-1611971741365)(微服务.assets/1611456580772.png)]
-
实现自定义负载均衡算法
-
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @configuration public class LBRule{ @Bean public IRule myRule(){ return new RoundRobinRule(); } }
-
服务降级
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8LVKWxJ-1611971741366)(微服务.assets/1611468443668.png)]
-
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT", class = DeptClientServiceFallbackFactory.class) public interface DeptClientService{ }
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-om9V6Fw7-1611971741366)(微服务.assets/1611468652228.png)]
-
-
dashboard
-
@SpringBootApplication @EnableHystrixDashboard public class DeptConsumerDashboard{ public static void main(String[] args){ SpringApplication.run(DeptConsumerDashboard.class, args); } }
-
<dependency> springboot-starter-hystrix </dependency> <dependency> springboot-starter-hystrix-dashboard </dependency>
-
Zuul
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvgwU65O-1611971741367)(微服务.assets/1611470050409.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVJUkoBY-1611971741368)(微服务.assets/1611476802358.png)]
-
用ip 地址 代替 localhost:${server.port}
- hosts 里面写 127.0.0.1 www.abc.com
-
server: port: 9527 spring: application: name: springcloud-zuul eureka: client: service-url: defaultZone: http://eurek111.com:port/euraka instance: instance-id: zuul${server.port}.com prefer-ip-address: true info: app.name: linln1-springcloud company.name: blog.linln1.com
-
//ZuulApplication_9527.java package com.linln1.springcloud import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @SpringBootApplication @EnableZuulProxy public class ZuulApplication_9527{ public static void main(String[] args){ SpringApplication.run(ZuulApplication_9527.class, args); } }
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7YOW566-1611971741369)(微服务.assets/1611477688732.png)]
-
公共前缀并不是必须的
- routes中的配置是将 mydept.path 映射到 mydept.serviceId
SpringCloud config 分布式配置
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wH1Vmf7o-1611971741371)(微服务.assets/1611478465563.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2p2KziX-1611971741371)(微服务.assets/1611478606462.png)]
-
server
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvGGTt8s-1611971741372)(微服务.assets/1611479250874.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fux0Dbo4-1611971741372)(微服务.assets/1611479264522.png)]
-
application.yml
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fH7KyRjN-1611971741373)(微服务.assets/1611479316275.png)]
-
client
-
config-client.yml
-
ConfigClientController @SpringBootApplication @Enable { }
-
//application.yml
spring:
application:
name: springcloud-eureka
//bootstrap.yml 直接连接配置,不用再application.yml中再次配置
spring:
cloud:
config:
name: config-eureka
label: master
profile: dev
uri: http://localhost:3344