上面画了一张技术栈图谱,对于刚工作的同学,可能有些帮忙。
云原生利用也就是面向“云”而设计的利用,在应用云原生技术后,开发者无需思考底层的技术实现,能够充分发挥云平台的弹性和分布式劣势,实现疾速部署、按需伸缩、不停机交付等。
落实到技术上来说,云原生是基于散布部署和对立运管的分布式云,以容器、微服务、DevOps 等技术为根底建设的一套云技术产品体系。
1. 微服务
微服务的解决方案侧重于开发层面,咱们还是以 Spring Cloud 体系为主,多种 Spring Cloud 实现组件配合应用。Spring Cloud 作为一套标准,前些年比拟支流的实现有 Spring Cloud Netflix
,像 Eureka、Zuul、Ribbon、Feign、Hystrix 等,就属于 Netflix 的组件。但最近几年 Spring Cloud Alibaba 逐步成熟了起来,甚至将 Dubbo 也纳入了体系内。咱们倡议优先选用 Spring Cloud Alibaba
体系组件,应该该系列组件国内社区沉闷,也更合乎国人应用习惯。
- 微服务网关 :举荐学习
Spring Cloud Gateway
,作为微服务网关,可实现对立鉴权、服务监控、负载、服务限流、日志记录等等性能。 - 限流降级 :举荐搭配
Sentinel + Sentinel Dashboard
,Sentinel 是 Spring Cloud Alibaba 的组件,可实现服务熔断、限流、降级以及热点防护等性能,Sentinel Dashboard 为 Sentinel 提供可视化 Web 控制台。Sentinel 的同类产品还有 Hystrix、Resilience 4J,但不倡议应用 Hystrix,因为曾经进行保护了。 - 服务调用 :举荐学习
Dubbo Spring Cloud
,因为 Dubbo 的传输性能,比照只基于 http 的 OpenFeign 要高的多。 - 分布式事务 :举荐学习 Alibaba 的
Seata
框架,它提供了 AT、TCC、SAGA 和 XA 事务模式,根本能应酬大多数的利用场景。 - 衰弱监控 :如果条件容许,举荐搭配
Spring Boot Actuator + Prometheus + Grafana
。Spring Boot Actuator 帮咱们实现了对程序外部运行状况监控,比方监控情况、Bean 加载状况、环境变量、日志信息、线程信息等;Prometheus 是一套开源的系统监控和报警框架;Grafana 能够通过将采集的数据查问而后可视化地展现,并及时告诉。Actuator 提供端点将数据裸露进去,Prometheus 定时去拉取数据并保留和提供搜寻和展现,Grafana 提供更加精美的图像化展现。如果想简略监控,能够搭配Spring Boot Actuator + Spring Boot Admin
,Admin 提供可视化展现页面。 - 注册核心 :举荐学习 Alibaba 的
Nacos
。同类产品还有 Eureka、Zookeeper、Consul 等,Eureka 在分布式事务上反对 AP 的,后两者反对 CP,而 Nacos 可主动切换是 AP 还是 CP。 - 配置核心 :举荐学习 Alibaba 的
Nacos
。同类产品还有 Spring Cloud Config、Apollo(携程),但它们在功能完善度和应用简略性上,不如 Nacos。 - 链路追踪 :举荐搭配
Spring Cloud Sleuth + Zipkin
,Zipkin 的同类产品还有 Cat、Pinpoint、SkyWalking 等。抉择 Zipkin 的起因是因为简略好上手,如果有条件,能够尝试其余产品。 - Java 诊断工具 :举荐学习 Alibaba 的
Arthas
,以往排除线上 Java 问题时须要用到 jps、jmap、jstack 等 jdk 工具,Arthas 能够完满代替这些。 - 消息中间件 :消息中间件举荐
RabbitMQ
,同类产品还有 Kafka、RocketMQ,实际上 RabbitMQ 在三者中并发吞吐量是最差的,但它的长处在于对数据的一致性、稳定性和可靠性有更好的保障。在 to B 的业务开发中,RabbitMQ 更适宜。 - 缓存数据库 :分布式缓存举荐应用
Redis
,本地缓存能够试试 EhCache 框架。 - 分布式协调 :举荐学习
ZooKeeper
,它的选举、监听等机制,为分布式协调提供了很好的反对,例如分布式锁。 - 定时调度 :举荐应用
xxl-job
,同类型产品还有 quartz、elastic-job 等。综合思考架构设计、学习老本等因素,xxl-job 更为适宜。 - 搜索引擎 :举荐学习
Elastic Search
,这没得说,Elastic Search 是以后最风行的搜索引擎。 - MySQL 增量同步 :举荐学习 Alibaba 的
Canal
,它能够实现以 MySQL 为数据源的增量同步。
2. 容器化
- Docker:是一个开源的利用容器引擎,尽管 Docker 将来将被 Kubernetes 摈弃,可能到时候更多的转向 Containerd 或 CRI-O 之类的容器运行时。但还没那么快,同时也不影响咱们学习 Docker 的思维和基本操作。
- Kubernetes:是一个开源的,用于治理云平台中多个主机上的容器化的利用。如果还是以 Docker 作为容器引擎的版本,能够了解为 Kubernetes 用来编排治理部署在下面的 Docker 容器。
- Rancher:Rancher 为运行容器化的利用实现了一层灵便的基础设施服务。能够成,Rancher 为 Kubernetes 的服务编排,以及 Kubernetes 集群自身的治理提供可视化服务。
3.DevOps
外围关注的是 CI/CD,除了主动部署以外,还包含代码提交后的自动测试,代码品质审核,版本治理等流水线解决。
- GitLab:是一个自托管的 Git 我的项目仓库,同类产品还有 GitHub、码云等。企业私有化举荐用 GitLab,是因为它收费,GitHub 免费。
- Nexus:Nexus 是一个弱小的 Maven 仓库管理器,它极大地简化了本人外部仓库的保护和内部仓库的拜访。企业的网络环境通常不反对间接从公网仓库拉取 Maven 依赖,Nexus 在此时就施展了很大的作用。
- Harbor:和 Nexus 相似,Harbor 是 Docker 镜像仓库管理器,尽管 Docker 官网也提供了公共的镜像仓库, 然而从平安和效率等方面思考, 部署公有环境内的 Registry 也是十分必要的。
- Jenkins:Jenkins 是一个开源的一种继续集成工具,用于监控继续反复的工作,旨在提供一个凋谢易用的软件平台,使软件我的项目能够进行继续集成。DevOps 各阶段的流水线配置,通常都通过 Jenkins 来执行。
- Sonar:Sonar(SonarQube)是一个用于治理源代码品质的开源平台。Sonar 不只是一个品质数据报告工具,更是代码品质治理平台。