spirng-cloud笔记目录

公司想切换到spring cloud上所以我找了本书看看 大致上知道了spring cloud的各部分组件 也算是用的比较熟练了
但是好记性不如烂笔头 所以写一波笔记 防止遗忘

目录

  • 综述
  • 注册中心(eureka、consul、zk)
  • 微服务服务端、客户端(feign)
  • 容错、负载均衡(ribbon、hystrix)
  • 配置中心(config)
  • 网关(zuul)
  • 消息总线(bus、stream)
  • 定时任务调度(qz)
  • 分布式调用链日志(sleuth:基于zipkin的)
  • 搭建个人基于spring cloud 的脚手架遇到的问题

综述

spring cloud 提供一整套分布式微服务的解决方案
联系到云原生(cloud native)这个概念
我个人觉得 他是把微服务的架构+容器+自动化运维整合到一起提出的概念
在基于docker+k8s这样的或者类似的平台下 快速开发、切入到已有的分布式环境中的应用

注册中心

在微服务架构中 较为核心的应该就是注册中心了 服务的治理、使用都需要注册中心的协助
spring cloud支持比较好的注册中心 大致有三种 eureka、consul、zookeeper
这三个 各有各的好 不过现在来说 consul可能功能更加齐全 更加好用一点 这个在后续的详细的笔记详说

微服务的服务端、客户端

服务端:

这个就是很普通的http接口 莓什么好说的 现在http大部分还是使用1.0。或者1.1 性能说实话一般 不过差不多够用 如果有特殊需求 完全可以选择其他协议
例如我北京的有个大佬朋友 他们也是spring cloud +docker +k8s技术栈 他们就要把http协议切换到tcp协议 照样刚
但是后续http2.0出来后 我觉得性能差别应该不会太大了 毕竟 http2.0也是基于二进制 还有其它的功能 我比较看好 http2.0

客户端:

简陋点直接用restTemplate也是可以访问调用的 但是不好管理 而且麻烦 建议使用feign去申明接口即可调用
但是这个也有点坑
举个例子 在spring mvc 4.3 之后 是提供GetMapping这样的封装RequestMapping的接口 但是feign不支持的 还有其他的坑 到详细的笔记细说

容错、负载均衡

容错:

spring cloud 是基于hystrix来做容错的 容错其实就是 发现错误 马上关闭停止对错误的节点的访问、有相应的降级措施情况下 进行服务降级 保证服务的可用
当然也提供请求缓存、请求合并 turbine也可以基于hystrix、dashboard来进行集群的状态监控

负载均衡:

spring cloud 是基于ribbon来做客户端负载均衡的 首先 会去注册中心找到注册列表 通过轮寻方式 去负载均衡 当然可以重写负载均衡器(LoadBalancerClient) 也是可以使用其他更加优越的算法的 毕竟spring cloud 只是提供基础实现

配置中心

国内的话 各个大公司基本都有各自的配置中心的实现 我们公司用的是baidu的disconf 用起来也就那回事吧 不如spring cloud config
config 是使用 git 或者svn 来做配置仓库 这天生站在巨人肩膀上
config 可以实现集中管理各个集群的配置 而且安全性较高 访问安全、数据的加密解密(对称加密需要替换jre、还支持rsa这种非对称加密)
还可以通过配合bus组件 进行动态修改集群配置 这一点是很重要的 因为很多参数根据实际情况进行微调是非常需要的

网关

就是统一对访问进行管理的地方 例如鉴权、限制等等
网关 说实话 如果实力强劲 就不会选择这个来用zuul
nginx+lua功能不比这个东西强?

消息总线

说的这么高端其实就是一个mq的使用 bus主要是消息传递 stream主要是发布订阅事件没什么特别的
spring cloud bus 或者stream 天然支持 rabbit或者kafka 都差不多吧 看具体情况选择 个人比较倾向rabbit

定时任务调度

定时任务 是每个系统必须的一个模块
一般也就三种方式
1:基于jdk的timer timerTask方式 这种方式简单粗暴 但是需要自己实现一些复杂的功能
2:基于spring 的 scheduled task 这个也是不太适合企业级使用
3:qz(quartz)功能多 支持集群环境下调度 但是需要数据库支持 不用说 肯定qz的 不然要写死

分布式调用链日志

sleuth 是基于zipkin的一套分布式调用链跟踪组件
说起这个 公司的zipkin还是我们组负责的 老大带我们去引入zipkin 搞死人了
调用链呢 是跟踪每个请求从发起 到调用各个服务 一直到db操作一整链
记录这些日志 方便优化、跟踪错误
这个到详细笔记细说 这个和业务日志、操作日志是不同的

遇到的问题

这个说实话还是遇到很多问题的 因为我基于公司已有的架构 使用spirng cloud 从新整合 还是有点坑的 详细笔记再说

总结:spring cloud 基本上就这些组件 spring cloud + docker + k8s 这一套可以说是现在做微服务 云原生的标准套路了

你可能感兴趣的:(spirng-cloud笔记目录)