乐趣区

关于云原生:云原生技术栈学习大纲

上面画了一张技术栈图谱,对于刚工作的同学,可能有些帮忙。

云原生利用也就是面向“云”而设计的利用,在应用云原生技术后,开发者无需思考底层的技术实现,能够充分发挥云平台的弹性和分布式劣势,实现疾速部署、按需伸缩、不停机交付等。

落实到技术上来说,云原生是基于散布部署和对立运管的分布式云,以容器、微服务、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 不只是一个品质数据报告工具,更是代码品质治理平台。
退出移动版