微服务,软件应用开发的新纪元

微服务,软件应用开发的新纪元

2014年 Martin Fowler 在《MicroServices》论文中首次提出了微服务的概念。近些年,伴随着互联网的日益发展,微服务在国内、甚至国际上的发展已达到一个新高潮。

在微服务流行之前,SOA(Service Oriented Architecture)被广泛熟知与采用。微服务基于 SOA 发展而来,但与之相比,微服务更易于理解,也更利于设计者、开发者的实践落地,它把“面向服务”的设计思想实现得更加彻底。

微服务架构模式的优势与痛点

微服务架构建议实践者以“业务”来切分服务,鼓励开发者选择最适合的技术实现具体的服务,只需保证其对外提供的 API 接口保持一致即可。也就是说,微服务架构理念的出现,使得应用开发前的技术选型的选择空间更加宽广、灵活。

将系统拆分为多个微服务,也便于对每个微服务分别实施监控,不断收集每个微服务的具体指标。当某个微服务出现性能瓶颈时,可针对性的对该服务进行水平扩展以支撑当前大流量,而无需对整个系统进行横向扩展。

除了以上优点,微服务架构按业务拆分服务的理念,更使服务之间彼此隔离,相互之间不会产生影响。这也便于我们在开发过程中利用技术手段,更高效地实现自动化部署。

正因为这些优点,当前很多软件企业在开发新项目时,首先考虑的是微服务架构,甚至企业正将以前的老系统慢慢迭代为该架构模式。

当然,除了以上优点,微服务架构也存在以下缺点:

  1. 微服务粒度大小难以划分,需要设计人员对业务有很好的掌握;
  2. 分布式复杂性,主要体现在分布式事务、网络延迟、系统容错等问题解决难度较大;
  3. 微服务之间通信成本较高,对微服务之间网络稳定性,通信速度要求较高;
  4. 微服务数量较大,对运维人员的运维、部署工作带来较大的挑战。

微服务开发踩坑经验

经过多年来不断的探索与总结,在微服务设计、开发领域,我已积累了丰富的实战经验,深知微服务实践过程中各个痛点及难点。

避免大家再踩我之前所趟过的坑,让开发过程更加顺利、更专注于业务开发,我特别推出了我的达人课《微服务一站式开发》,它集合了自己在微服务开发过程中的所有经验总结,主要包括以下主要内容:

  1. 目前,微服务开发中,各大公司通常采用的技术主要有 Spring Boot、Spring Cloud,因此在课程的开篇首先会对 Spring Boot 的基础知识,以及它与其他常用的各大技术框架的整合进行演示,并带大家利用 Spring Cloud 整合 Consul 实现服务的注册、发现等;

  2. 微服务调用过程中,遇到网络等不稳定因素时,如果不加以控制,系统很容易发生雪崩效应。本课程将充分利用 Spring Cloud 相关特性教各位读者如何实现服务的熔断、降级、限流等功能,从而解决这一问题;

  3. 将整个系统按业务拆分成多个服务,这个过程需要解决微服务鉴权、分布式事务、分布式锁等关键问题。为此,本课程引入了 Spring Cloud Zuul 对微服务进行统一鉴权的讲解;对 Redis、Zookeeper 高级技术点的解读,及利用它们如何实现分布式锁的过程分析;对分布式事务的理论说明,以及消息中间件 RabbitMQ 之死信队列、发布确认、消费确认的应用指南,并利用它们实现数据的最终一致性,解决微服务分布式事务;还会讲解如何利用第三方开源框架实现数据的实时一致性等内容;

  4. 微服务的数量往往较大,运维人员面临着运维、部署困难等问题,为此课程为各位读者带来了微服务监控、Docker 的常用命令、架构以及容器管理平台 Rancher、K8S 等相关技术使用指南;

  5. 最后,课程将通过一个完整的项目,带大家了解微服务从开发,到代码提交,再到打镜像、自动拉起容器、容器的扩缩容等一系列完整的过程,并对其中使用到的关键技术和工具(如 Jenkins)一一进行精要说明。

为了方便大家更清晰地学习本课程,我们再来看下课程目录安排。

  • 第01-02课:主要演示微服务开发过程中,Spring、Spring MVC 常用主要知识点;

  • 第03-05课:主要演示在实际工作中,Spring Boot 如何整合诸如 Spring Data JPA、Redis、MongoDB、RabbitMQ、Elasticsearch 此类的常用技术; 
    第06-09课:将对 Consul 相关知识做详解,并利用 Spring Cloud 和 Consul 实现服务的注册与发现;同时将演示 Spring Cloud常用组件(如 Zuul、Ribbon、Hystrix、Feign 等)在实际工作中使用方法;此外,在网关层整合 OAuth 2 实现微服务鉴权、配置中心及请求链路跟踪等内容也会在本部分进行详细解读与演示;

  • 第10-13课:首先会对 Redis 分片原理、集群搭建、分片数据迁移,Redis 与 Lua 脚本整合进行详解;接着,对 ZooKeeper 相关算法(如 Paxos、ZAB)进行介绍,并对其 watcher 的实现原理及 ZooKeeper 集群搭建过程作分析与说明;之后讲解如何利用 Redis、DB、ZooKeeper 等实现分布式锁,介绍分布式事务相关原理,并演示在工作中如何利用消息中间件实现数据最终一致性和利用第三方组件实现数据实时一致性等内容;

  • 第14课:主要演示如何实现微服务监控;

  • 第15-17课:介绍 Docker 架构及常用命令;对常用容器管理平台如 Rancher、K8S 进行详细说明,并说明工作中如何用其管理容器;

  • 第18课:实战部分,对前17课所讲内容进行综合实战,让读者了解在工作中如何应用以上技术。其中主要包括微服务开发、微服务网关、微服务调用、负载均衡、熔断、微服务鉴权、日志监控、配置中心、微服务镜像生成、容器管理平台搭建及如何管理容器等技术内容。

最后,我要对各位读者说明的是,经过本次课程的学习,我将带领大家的微服务开发能力再上一个新台阶。在学习的过程中,如果各位遇到任何问题,请通过 GitChat 的读者圈与我交流互动,我会尽力解答各位提出的问题。

你可能感兴趣的:(微服务,软件应用开发的新纪元)