收起

微服务一站式开发

覆盖微服务全栈知识点,实现传统开发向微服务架构转型

黄朝兵 · 资深开发工程师
已发布 20 篇 共 20 篇
1

导读:初识微服务架构

试读
2

第01课:Spring Boot 基础详解(一)

试读
3

第02课:Spring Boot 基础详解(二)

试读
4

第03课:整合常用技术框架之 JPA 和 Redis

5

第04课:整合常用技术框架之 MongoDB 和 RabbitMQ

6

第05课:整合常用技术框架之 Elasticsearch

7

第06课:Spring Cloud 整合 Consul 实现服务注册、发现

8

第07课:Spring Cloud 整合常用组件详解

9

第08课:Zuul 整合 OAuth 2 实现鉴权

10

第09课:配置中心及链路监控

11

第10课:Redis 高级技术点解析

12

第11课:ZooKeeper 高级技术点解析

13

第12课:分布式锁

14

第13课:分布式事务

15

第14课:微服务监控

16

第15课:Docker 架构及常用命令

17

第16课:容器管理 Rancher 平台架构

18

第17课:利用 K8S 搭建容器管理平台

19

第18课:微服务综合实战(上)

20

第19课:微服务综合实战(下)

导读:初识微服务架构

单体架构(Monolithic)

十年前左右,我去公司面试时,面试官问我的第一个问题是让我简要介绍下软件设计中的三层设计模型(表示层、业务逻辑处理层、数据访问层):

  • 表示层:通常理解为用于和用户交互的视图层;
  • 业务逻辑处理层:用户提交请求,经过业务逻辑层处理后,对用户请求作出响应;
  • 数据库访问层:主要用于操作数据库。

尽管在软件设计过程中,架构师或者程序设计者遵守了流行一时的经典的三层模型,但由于并未按照业务场景进行划分,使得最终的系统应用将所有的业务场景的表示层、业务逻辑处理层、数据访问层放在一个 Project 中,然后经过编译、打包并部署到一台服务器上。

这种架构适用于用户业务不复杂、访问量较小的时候,甚至可以将应用服务、数据库、文件服务器部署在一台服务器上。但随着用户业务场景变得越来越复杂,单体架构的局限性就很快暴露出来了,主要体现在如下几方面:

  • 随着业务越来越复杂,单体应用代码量急剧膨胀,最终导致代码可 读性、可维护行和可扩展性得不到保证;
  • 随着用户访问量增加,单体应用的并发能力有限;
  • 随着系统代码量的剧增,当修改应用程序或者新增需求时,测试难度成指数级增长;
  • 部署效率低下;
  • 技术选型单一。

SOA 架构(Service Oriented Architecture)

SOA 是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA 可以看作是 B/S 模型、XML(标准通用标记语言的子集)/Web Service 技术之后的自然延伸。

其主要优点有:

  • 把模块(即服务)拆分,使用接口通信,降低模块之间的耦合度;
  • 把项目拆分成若干个子项目,不同的团队负责不同的子项目;
  • 增加功能时只需要再增加一个子项目,调用其它系统的接口就可以;
  • 可以灵活的进行分布式部署。

主要缺点:

  • 和单体架构相比,增加了系统复杂度,系统整体性能有较大影响;
  • 多服务数据通信协议之间转换过程复杂,容易造成 ESB(Enterprise Service Bus)性能瓶颈。

微服务架构(MicroServices)

微服务的概念是 Martin Flower 在2014年写的一篇论文《MicroServices》中提出来的,其主要特点是:

  • 每个服务按照业务划分;
  • 服务之间通过轻量级 API 调用;
  • 可以使用不同语言开发;
  • 可以使用不同的数据存储技术;
  • 可独立部署,服务之间互相不影响;
  • 可针对用户访问流量大的服务单独扩展,从而能够节约资源;
  • 管理自动化。

主要挑战:

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

通过以上对微服务的分析,相信各位读者已了解了微服务开发过程中我们将会面临的各种挑战。为了让大家在微服务开发过程中更加顺利,少踩坑,我在本达人课中分享了自己在微服务开发过程中的所有总结,希望对各位读者有所帮助。

众所周知,对于做技术的工程师而言,除了理论之外,我们更关注于实战,因此在课程的每篇文章中,主要以实战为主,比较关键的理论将同步为各位做详细说明。

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

  • 第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课所讲内容进行综合实战,让读者了解在工作中如何应用以上技术。其中主要包括微服务开发、微服务网关、微服务调用、负载均衡、熔断、微服务鉴权、日志监控、配置中心、微服务镜像生成、容器管理平台搭建及如何管理容器等技术内容。
还没有评论
评论
关注提示×
扫码关注公众号,获得课程更新动态!