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

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

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