前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微服务架构下该如何技术选型呢?

微服务架构下该如何技术选型呢?

作者头像
博文视点Broadview
发布于 2023-05-19 11:30:17
发布于 2023-05-19 11:30:17
92600
代码可运行
举报
运行总次数:0
代码可运行

一、前言

实现基于微服务开发的产品时,或者说将单体应用重构为微服务架构时,将面临着众多技术框架的选择。大公司往往会有专门的部门或团队来负责自主研发的框架,以满足产品的需要,但是对于一般的中小型企业,选择合适的开源框架就显得更接地气了。本章将简单介绍微服务中,在技术选型时需要注意哪些原则,以及有哪些常用的开源技术框架,希望能够为大家在进行技术选型、调研时提供一些思路和方向。

笔者面试过很多程序员,一提及微服务,就会具体说到Spring Boot、Spring Cloud,然后就是“背诵”各种具体的用法和配置文件。并不是说这样不对,但我们更希望知道的是这些技术框架的原理,为什么选择它,它与其他类似框架又有何不同。

至于一个技术框架该怎么用,它适用于什么场景,笔者建议可以直接阅读官方或对应的GitHub上的文档,有需要时还可以阅读一下关注点的源码,这样对正确理解它是很有必要的,毕竟官方发布的东西是相对权威的,其他地方的资料或许存在片面性,对大家的使用、理解存在一定的误导。(这只是笔者对大家在技术选型时,查阅资料的一些建议。)

二、选型原则

在软件开发领域,几乎每天都有新的技术框架诞生、更新,一些新的概念更是层出不穷,在进行技术选型时,难免让人无从抉择。对于技术选型,我个人有以下几点建议。

1.有需求,再引入

在微服务架构中,各类组件/技术有很多,但并不意味着所有的都应该引入你的项目,倘若单纯为了覆盖全技术栈或组件而全部引入,这将是一种很不明智的选择。后续将会成为你项目的累赘,让你苦不堪言。

只要你记住这六个字:“有需求,再引入”,就OK了。伴随着项目体系架构的完善、功能的健全,当有某方面的需求时,在逐步考虑是否引入某些技术组件。

2.选择最熟悉、使用最多的技术

“一个新项目里最好不要使用超过30%的新技术”,我觉得这句话是有一定道理的。对于你完全不知道、不了解的技术,你是无法预估、掌控在使用过程中会出现的任何风险的,一旦出现问题,短时间内解决不了,你将会变得很难堪。

这里不是说拒绝使用、接触新技术,新技术是值得大家去追捧、了解、学习的,一些新技术在很大程度上能给我们带来前所未有的利处,解决其他技术框架解决不了的问题。这里所说的“新技术”,是指没有经过充分的考察、技术验证、存在种种疑惑的技术,而是一味的拿来主义,这样的风险可想而知。

确保选择的技术是业界使用最多、被大家认可的技术,即使出现了问题,也能应对自如。至少在团队内部小范围是非常认可的。

3.有强大社区支撑的技术

GitHub上star的数量是一个重要指标,同时可以参考近年来代码、文档、issues等更新频率,各大技术博客是否有相关技术分享记载,这些都能够说明该技术是否活跃、受欢迎程度、使用人群多少等。

拥有强大社区支持的技术,在选型后,倘若使用出现疑问、问题、bug等,能够有地方可提、可修复、可深究探讨,毕竟现在的技术社区都是足够开放的。

慎选个人开源的技术框架、组件等,里面到底有多少坑,没几个人能说清楚,况且说不定哪天就不复存在了。

4.从业务、项目规模出发

任何技术的出发点都是为最终业务而服务的,不同业务、不同项目规模,对技术的要求指标都是不同的。处于初创期的业务,选型的基准是相对灵活,毕竟业务相对简单,支撑业务不是很大,只要够用、开发效率足够高就好。处于复杂业务而重构的项目,选型就需谨慎,往往伴随着一些复杂需求诞生、规模大小的不确定性,不得不考虑选型技术可能伴随着一些小修小补或者螺旋式上升的重构,则需选型便于适配、切换、替换,耦合度低的技术。

正因为技术选型和业务相关,我们能够观察到一些很明显的现象:新技术往往被早期创业团队或大公司的新兴业务使用;中大型公司的核心业务则更倾向于用一些稳定了几年的技术;一个公司如果长期使用一种技术,就会倾向于一直使用下去,甚至连版本都不更新地使用下去。

学会从业务端思考。首先我们需要充分地理解业务,理解用户需求,理解当下需要解决的首要问题,以及可能的风险,再将目标进行分解,进行具体的技术选型、模型设计、架构设计。

5.先验证后使用

对于未经验证的新技术、新理念的引入一定要慎重,一定要在全方位的验证过后,再大规模的使用,最终确定选型。新技术、新理念的出现,自然有它的诱惑,慎重并不代表保守,技术总是在不断前进,拥抱变化本身没有问题,引入不成熟的技术看似能带来短期的收益,但是它的风险或者后期的成本可能远远大于收益。

验证后,才有说服力,用着更放心。

三、技术选型

每种技术架构都有其优缺点,存在即合理,不同的业务场景使用不同的应用架构,技术框架,不一定说最新的架构、技术就是最适合你的。

微服务架构中常提及到的主要技术框架选型如下表所示,本文后面将基于此展开说明对比。

四、服务治理

1.Dubbo

Dubbo是一款高性能、轻量级的开源JAVA RPC框架SOA服务治理方案。简单的说,Dubbo就是个服务框架,说白了就是个远程服务调用的分布式框架。它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现,很容易和Spring框架无缝集成。

Dubbo逻辑架构如下图所示:

  • Provider:暴露服务的提供方,可以通过jar或者容器的方式启动服务。
  • Consumer:调用远程服务的服务消费方。
  • Registry:服务注册中心和发现中心。
  • Monitor:统计服务和调用次数,调用时间监控中心。(Dubbo的控制台页面中可以显示,目前只有一个简单版本)
  • Container:服务运行的容器。

Dubbo特点:

  • 远程通讯:提供对多种基于长连接的NIO框架抽象封装(非阻塞I/O的通信方式,Mina/Netty/Grizzly),包括多种线程模型,序列化(Hessian2/ProtoBuf),以及“请求-响应”模式的信息交换方式。
  • 集群容错:提供基于接口方法的透明远程过程调用(RPC),包括多协议支持(自定义RPC协议),以及软负载均衡(Random/RoundRobin)、失败容错(Failover/Failback)、地址路由、动态配置等集群支持。
  • 自动发现:基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

在现有的微服务架构下,Dubbo只能说是一个服务治理框架,或者说是一个RPC框架,是以接口为粒度,一个接口类就就是一个服务。如果直接用Dubbo来实现微服务架构,还缺少以下几个功能:

  • 分布式配置:可以使用Spring Cloud Config、Apollo等来实现。
  • 链路追踪:可以使用Zipkin、CAT等来实现。
  • 批量任务:可以使用当当网开源的Elastic-Job来实现。

2.Spring Cloud

Spring Cloud是目前最主流的微服务架构落地首选方案之一,是基于Spring Boot实现的开源框架,是一个全家桶,是微服务的整体技术栈。

Spring Boot是Spring 的一套快速配置脚手架,使用默认大于配置的理念,用于快速开发单个微服务。

它为服务注册发现、动态路由、负载均衡、配置管理、消息总线、熔断器、分布式链路追踪、大数据操作等提供了简单的实现,让我们可以更简洁地使用它。

正如我们前面说过的,微服务是可以独立部署、水平扩展、独立访问的服务单元,而Spring Cloud就是这些微服务的“大管家”,采用了微服务这种架构之后,项目的数量会非常多,调用链路复杂,从而管理成了很大的问题,而Spring Cloud框架恰恰提供了各种组件用于管理和治理微服务,理所应当地成了大家的首选框架。

Spring Cloud的整体架构如下图所示,提供一站式的微服务架构解决方案。

使用Spring Cloud来构建微服务架构可以省去你整合各家技术的成本,Spring Cloud为我们构建微服务架构提供了一站式的解决方案,就好比当初Spring诞生是为解决EJB企业应用开发的众多问题而提供的一站式轻量级企业应用开发解决方案一样,随着使用Spring Cloud的产品数量增加,Spring Cloud在微服务架构中已一统江湖。

下面是Spring Cloud的完整技术栈,看完你就知道它为啥会在微服务架构中一统江湖了。

3.对比、总结

通过上表对比,很容易发现Spring Cloud拥有很多的项目模块,包含了微服务系统的方方面面。Dubbo是一个非常优秀的服务治理和服务调用框架,但缺少很多功能模块,例如网关、链路追踪等。在项目模块上,Spring Cloud占据着更大的优势。对比并不是否定谁,推崇谁,只是说明在不同场景下,各有优劣,需客观来看。

如果仅关注于服务治理的这个层面,Dubbo其实还优于Spring Cloud很多:

  • 支持多种序列化协议,如Hessian、HTTP、WebService。
  • Dobbo Admin后台管理功能强大,提供了路由规则、动态配置、访问控制、权重调节、均衡负载等功能。
  • 在国内影响力比较大,中文社区文档较为全面。
  • 阿里最近重启维护,成为Apache孵化项目。
  • Dubbo使用RPC协议效率更高,在极端压力测试下,Dubbo的效率会高于Spring Cloud效率一倍多。

如果对效率有极高的要求建议使用Dubbo,相对比RPC的效率会比Restful高很多,如果选择微服务架构去重构整个技术体系,那么 Spring Cloud是当仁不让之选,它可以说是目前最好的微服务框架,没有之一,并且可以断言,将来Dubbo可以很好地整合到Spring Cloud中。

五、API网关

API网关作为微服务中所有服务的唯一入口,免得业界各类成熟的技术框架组件,在进行技术选型时,需要特别考虑是否拥有以下特性:

  • 高可用:网关是对外的唯一关口,必须保证 7 * 24小时可用,持续提供稳定可靠的服务。
  • 高性能:所有的请求都会经过网关,它承受的压力是巨大的,所以必须保证它具备良好的性能,以应对高并发请求。
  • 安全性:网关必须能够防止外部的恶意访问,确保内部各个微服务的安全。
  • 扩展性:网关是一个处理非业务功能的绝佳场所,必须能够提供流量管控、协议转发、日志监控等服务,同时能够为以后对非业务功能的扩展提供良好的兼容性。

1.Zuul

Zuul作为Spring Cloud中的核心组件之一,充当API网关的重要角色,所有请求都可以通过Zuul达到后端的应用程序、服务。Zuul提供了动态路由、监控、弹性负载和安全等特性,其核心是一系列的Filter,其作用类似于Servlet框架中的Filter,或者AOP。

Zuul底层利用各种Filter实现了如下功能:

  • 动态路由:根据需要将请求动态路由到后端集群。
  • 身份认证和安全性:识别每个需要认证的资源,拒绝不符合要求的请求,如:鉴权。
  • 统计监测:在服务边界追踪并统计数据,提供精确的统计监测视图。
  • 压力测试:逐渐增加对集群的流量以了解其性能。
  • 负载卸载:预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
  • 静态资源处理:直接在边界返回某些响应。

基于上述这些功能特性,使得Zuul作为API网关的不二之选。

Zuul的逻辑架构如下图所示:

Zuul的过滤器之间是不直接通信的,而是通过一个RequestContext的类来进行数据传统,RequestContext继承ConcurrentHashMap,使用ThreadLocal变量来记录每个Request需要传递的数据。

Zuul的过滤器是由Groovy来实现的,这些过滤器文件被存放在Zuul Server的特定目录下,Zuul会定期轮询这些目录,修改过的过滤器会动态加载到Zuul Server中,以便过滤请求使用。

Zuul的大部分功能都是通过过滤器来实现的,其中定义了4种标准的过滤器类型(pre、route、post、error),以满足应用于请求的不同阶段。

(如果想更清晰深入地了解Zuul,可以参考上图的Zuul逻辑架构图,并结合Zuul源码深入研究一下。)

2.traefik

在了解traefik之前,不妨先看看它的整体架构图,如下所示:

从上图不难看出,traefik充当了HTTP反向代理的角色,使得发布的服务变得轻松有趣。在微服务中,实质上是一个为了让部署微服务变得更加便捷而诞生的HTTP反向代理、负载均衡工具。,它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。

除了众多功能之外,traefik的与众不同之处还在于它会自动发现适合您服务的配置。无需维护和同步单独的配置文件,一切都会自动,实时地进行(无需重新启动,不会中断连接)。使用traefik后,你可以将更多的精力、时间花费在开发和部署上面,而不是在配置和维护其工作状态上。

特性:

  • 高性能
  • 无需安装其他依赖,通过Go语言编写的单一可执行文件
  • 支持Restful API接口
  • 多种后台支持:Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd
  • 后台监控, 可以监听后台变化进而自动化应用新的配置文件设置
  • 配置文件热更新。(无需重启)
  • 正常结束http连接
  • 后端断路器
  • 轮询,rebalancer 负载均衡
  • Rest Metrics
  • 支持最小化官方docker镜像
  • 后台支持SSL
  • 前台支持SSL(包括SNI)
  • 清爽的AngularJS前端页面
  • 支持Websocket
  • 支持HTTP/2
  • 网络错误重试
  • 支持Let’s Encrypt (自动更新HTTPS证书)
  • 高可用集群模式

3.OpenResty

OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。

OpenResty通过汇聚各种设计精良的Nginx模块(主要由OpenResty团队自主开发),从而将Nginx有效地变成一个强大的通用Web应用平台。这样,Web 开发人员和系统工程师可以使用Lua脚本语言调动 Nginx支持的各种C以及Lua模块,快速构造出足以胜任10K乃至 1000K以上单机并发连接的高性能Web应用系统。

OpenResty的目标是让你的Web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O模型,不仅仅对HTTP客户端请求,甚至于对远程后端诸如MySQLPostgreSQL、Memcached以及Redis等都进行一致的高性能响应。

4.Kong

Kong是一个在Nginx中运行的Lua应用程序,并且可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenResty一起发布,OpenResty已经包含了lua-nginx-module,OpenResty不是 Nginx的分支,而是一组扩展功能的模块。

是一个Api Gateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。可以很轻松扩展功能,模块化,可以运行在任何基础设施上。

它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。很方便地为路由和服务提供各种插件,网关所需要的基本特性,Kong都如数支持:

  • 云原生:与平台无关,Kong可以从裸机运行到Kubernetes。
  • 动态路由:Kong的背后是OpenResty+Lua,所以从OpenResty继承了动态路由的特性。
  • 熔断
  • 健康检查
  • 日志:可以记录通过Kong的HTTP,TCP,UDP请求和响应。
  • 鉴权:权限控制,IP黑白名单,同样是OpenResty的特性。
  • SSL: 可以为基础服务或API设置特定的SSL证书。
  • 监控:Kong提供了实时监控插件。
  • 认证:如支持HMAC, JWT, Basic, OAuth2.0等常用协议。
  • 限流
  • REST API:通过Rest API进行配置管理,从繁琐的配置文件中解放。
  • 可用性: 天然支持分布式。
  • 高性能: 背靠非阻塞通信的nginx,性能自不用说。
  • 插件机制: 提供众多开箱即用的插件,且有易于扩展的自定义插件接口,用户可以使用Lua自行开发插件。

上面这些特性中,反复提及了Kong背后的OpenResty,实际上,使用 Kong之后,Nginx可以完全摒弃,因为Kong的功能是Nginx的父集。

5.对比、总结

综上对比,从开源社区活跃度和学习成本来看,无疑是Zuul和Traefik较好;从成熟度来看,较好的是Kong、Traefik;从性能角度来看,Kong要比其他几个领先一些,从架构优势的扩展性来看,Kong丰富的插件,而Zuul是完全需要自研各类Filter,但Zuul由于与Spring Cloud深度集成,使用度也很高。

六、服务注册与发现

服务注册与发现,是一个古老的话题,当应用开始脱离单机运行和访问时,服务注册与发现就诞生了。目前的网络架构是每个主机都有一个独立的IP地址,那么服务发现基本上都是通过某种方式获取到服务所部署的IP地址。DNS协议是最早将一个网络名称翻译为网络IP的协议,在最初的架构选型中,DNS+LVS+Nginx基本可以满足所有的RESTful服务的发现,此时服务的IP列表通常配置在Nginx或者LVS。后来出现了RPC服务,服务的上下线更加频繁,人们开始寻求一种能够支持动态上下线并且推送IP列表变化的注册中心框架或组件。

现如今,各类服务注册与发现的框架、组件很多(Zookeeper、Eureka、Consul、etcd等),在选择上更是眼花缭乱。在服务注册与发现的技术选型上,我觉得我们应该还是有一定遵循原则和关注要点的。通常可从以下几个方面出发,进行重点关注、抉择。

  • 数据一致性
  • 负载均衡
  • 健康检查
  • 性能与容量
  • 易用性
  • 集群扩展性
  • 用户扩展性

七、配置中心

在微服务架构中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各种环境下配置信息的不同、配置信息修改之后实时生效等等,传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人员对配置管理的要求,如:

  • 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。
  • 时效性:修改配置,需要重启服务才能生效。
  • 局限性:无法支持动态调整:例如日志开关、功能开关。

在微服务架构中,使用配置中心之前,上述的问题或麻烦,你肯定也会遇到过,所以,是否引入配置中心,取决于你是否有下面的需求:

  • 配置集中化统一管理
  • 配置实时生效

一般完善的配置中心,都会从以下两个方面设计出发,以发挥配置中心的作用。

1)配置实时生效

传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。

2)配置管理流程

配置的权限管控、灰度发布、版本管理、格式检验和安全配置等一系列的配置管理相关的特性也是配置中心不可获取的一部分。(这也算是配置中心的高级特性作用)

1.Spring Cloud Config

Spring Cloud Config作为Spring Cloud中的一个组件,其功能开放,可开发性强,常是各类配置中心自我研发的基石。

从Spring Cloud Config的源码(spring-cloud-config-server)中,可以看出目前支持本地存储、Git仓库存储、SVN仓库存储、数据库存储方式,其他存储方式可参考源码自行实现即可。

以Git存储方式为例说明,Spring Cloud Config包含config-server、Git和Spring Cloud Bus三大组件:

  • config-server提供给客户端获取配置。
  • Git用于存储和修改配置。
  • Spring Cloud Bus通知客户端配置变更。

本地测试模式下,Spring Cloud Bus和config-server需要部署一个节点,Git使用GitHub就可以。在生产环境中,Spring Cloud Config,config-server需要部署至少两个节点。Spring Cloud Bus如果使用RabbitMQ,普通集群模式至少需要两个节点。

Git服务如果使用GitHub就不用考虑高可用问题,如果考虑到安全性要自建Git私有仓库,整体的成本比较高。Web服务可以部署多节点支持高可用,由于Git有数据的一致性问题,可以通过以下的方式来支持高可用:

  • Git+Keepalived冷备模式,当主Git挂了可以马上切到备Git。
  • Git多节点部署,存储使用网络文件系统或者通过DRBD实现多个Git节点的数据同步。

2.Apollo

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo分为MySQL,Config Service,Admin Service,Portal四个模块:

  • MySQL:存储Apollo元数据和用户配置数据。
  • Config Service:提供配置的读取、推送等功能,客户端请求都是落到Config Service上。
  • Admin Service:提供配置的修改、发布等功能,Portal操作的服务就是Admin Service。
  • Portal:提供给用户配置管理界面。

本地测试Config Service,Admin Service,Portal三个模块可以合并一起部署,MySQL单独安装并创建需要的表结构。在生产环境使用Apollo,Portal可以两个节点单独部署,稳定性要求没那么高的话,Config Service和Admin Service可以部署在一起,数据库支持主备容灾。

3.Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这正是Nacos官方给出的定义:

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

核心功能:

  • 动态配置服务:

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

  • 服务发现及管理:

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

  • 动态DNS服务:

通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。

动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。

Nacos部署需要Nacos Service和MySQL:

  • Nacos Service:对外提供服务,支持配置管理和服务发现。
  • MySQL:提供Nacos的数据持久化存储。

单机模式下,Nacos可以使用嵌入式数据库部署一个节点,就能启动。如果对MySQL比较熟悉,想要了解整体数据流向,可以安装MySQL提供给Nacos数据持久化服务。生产环境使用Nacos,Nacos服务需要至少部署三个节点,再加上MySQL主备。

4.对比、总结

整体来看,Nacos的部署结构比较简单,运维成本较低。Apollo部署组件较多,运维成本比Nacos高。Spring Cloud Config易于定制化二次开发,生产高可用的成本最高。

总的来说,Apollo和Nacos相对于Spring Cloud Config的生态支持更广,在配置管理流程上做的更好。Apollo相对于Nacos在配置管理做的更加全面,不过使用起来也要麻烦一些。Nacos使用起来相对比较简洁,在对性能要求比较高的大规模场景更适合。

参考资料:

1.http://dubbo.apache.org/zh-cn/

2.https://my.oschina.net/bigdataer/blog/1859971?from=timeline

3.https://github.com/Netflix/zuul/wiki

4.https://traefik.cn/

5.http://openresty.org/cn/

6.https://www.cnblogs.com/duanxz/p/9776316.html

7.https://yq.aliyun.com/articles/698930?utm_content=g_1000053369

8.https://blog.csdn.net/weixin_44337261/article/details/89426925

9.https://github.com/ctripcorp/apollo/wiki

10.https://nacos.io/zh-cn/


图书推荐

▊《深入理解Spring Cloud与实战》

方剑  著

Spring Cloud Alibba创始人倾力打造。

本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibba和 Netflix组件,并且剖析Spring Cloud对流处理、批处理,以及目前业界流行的Serverless的支持。在介绍各部分内容时,本书将理论与实践相结合,对每个核心知识点都给出了具体的案例应用,以帮助读者掌握核心组件的设计理念。

本书适合对Spring Cloud感兴趣并且想透彻理解Spring Cloud的读者阅读,也适合正在进行微服务选型的开发者阅读。

(扫码了解本书详情)

▊《Spring Cloud Alibaba微服务原理与实战》

谭锋(Mic)  著

本书针对Spring Cloud Alibba生态下的技术组件从应用到原理进行全面的分析,涉及的技术组件包括分布式服务治理Dubbo、服务配置和服务注册中心Nacos、分布式限流与熔断Sentinel、分布式消息通信RocketMQ、分布式事务Seata及微服务网关Spring Cloud Gateway。由于Spring Cloud中所有的技术组件都是基于Spring Boot微服务框架来集成的,所以对于Spring Boot的核心原理也做了比较详细的分析。

本书中涉及的所有技术组件,笔者都采用“场景→需求→解决方案→应用→原理”高效技术学习模型进行设计,以便让读者知其然且知其所以然。在“原理”部分,笔者采用大量的源码及图形的方式来进行分析,帮助读者达到对技术组件深度学习和理解的目标。

(扫码了解本书详情)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
 热文推荐  
用AI55款经典游戏是什么体验?
开工第一周,有哪些助你弯道超车的好书?
当深度学习遇上图:图神经网络的兴起!
揭开《钢铁侠》AI管家神秘面纱的扛鼎之作!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微服务架构技术选型思考
在互联网+ 和新商业业态的冲击下,传统行业正处于技术架构转型的十字路口,随着业务的不断创新变化,服务架构也随之无时无刻地进行革新。从早期的单体应用架构、面向SOA架构以及现在的微服务架构,无不是随着业务场景的不同诉求而进行适应性架构变迁。基于当前行业的业务发展,天然基于云服务的云原生模式无疑能给出重要参考意义。然而如何落地云原生技术正逐步成为行业用户的焦点。作为云原生生态领域中的关键一员,微服务的一举一动牵动着整个生态的发展方向。
Luga Lee
2021/12/09
1K0
微服务架构技术选型思考
微服务网关方案:Kong & Nacos
文章连接:https://mp.weixin.qq.com/s/Kk6Cl7n0sFGgCyyZtExa6A
程序员架构进阶
2021/04/14
2.1K0
微服务网关方案:Kong & Nacos
微服务网关方案:Kong & Nacos
前面我们介绍了 Spring Cloud 体系下的网关 Gateway(Zuul)。事实上,还有很多开源且广泛应用的网关方案,例如 Kong 和 Nacos。本篇将先介绍这两种网关,包括架构和主要原理,并给出集中网关方案的对比。
程序员架构进阶
2021/04/15
2.4K0
微服务架构技术有哪些_微服务架构组件
技术实现取决于需求,也就是微服务架构需要的考虑的基本技术问题。一个基本的微服务架构需要实现基本的五大核心功能:服务注册和发现、服务间通信、服务容错、数据管理和API网关,基本实现需求如下:
全栈程序员站长
2022/11/01
1.2K0
聊聊最新微服务架构技术栈选型
目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇文章主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技术吧。
码猿技术专栏
2023/05/01
9620
聊聊最新微服务架构技术栈选型
微服务中网关(API Gateway)的技术选型
用 Spring Cloud 微服务实战中,大家都知道用 Zuul 作为智能网关。API 网关(API Gateway)主要负责服务请求路由、组合及协议转换。下面是大家的总结:
天涯泪小武
2019/06/26
7.5K0
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
文章目录 SpringCloud 服务注册发现与服务治理 Eureka 服务调用 Feign 客户端负载均衡 Ribbon API网关 Zuul Gateway 配置中心 Config 服务之间调用的容错保护 Hystrix 链路跟踪 Sleuth+Zipkin 消息事件驱动 Stream SpringCloud Alibaba 服务注册发现和配置中心 Nacos 限流与熔断 Sentinel 分布式事务 Seata RPC服务通信 Dubbo 推荐技术选型 随着互联网、物联网的广泛应用,高
共饮一杯无
2022/11/28
9810
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
优秀的技术选型(摘选)
1. 优秀的技术选型(摘选) 1.1. 缓存 redis因为是单线程,不适合高耗时操作,对数据量比较大的缓存还是memcached比较合适 1.2. 分库分表 sharding-jdbc,驱动层,不需要额外机器 mycat,代理层,如果有运维团队,又舍得机器可以用这个 1.3. 数据同步 mysql在分库分表时,要做的一个重要操作,数据迁移 对mysql来说,canal是国内用的最多的方案,其次databus canal、maxwell等支持将要同步的数据写入mq,后续处理方便 ETL(抽取,清洗,转换),
老梁
2019/09/11
6710
微服务 2.0 技术栈选型手册
2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是Martin Fowler在其博客上发表了“Microservices”一文,正式提出微服务架构风格;二是Netflix微服务架构经过多年大规模生产验证,最终抽象落地形成一整套开源的微服务基础组件,统称NetflixOSS,Netflix的成功经验开始被业界认可并推崇;三是Pivotal将NetflixOSS开源微服务组件集成到其Spring体系,推出Spring Cloud微服务开发技术栈。
芋道源码
2019/05/09
1.9K1
微服务 2.0 技术栈选型手册
微服务2.0技术栈选型手册
一晃三年过去,微服务技术生态又发生了巨大变化,容器,PaaS,Cloud Native,gRPC,ServiceMesh,Serverless等新技术新理念你方唱罢我登场,不知不觉我们又来到了微服务2.0时代。基于近年在微服务基础架构方面的实战经验和平时的学习积累,我想总结并提出一些构建微服务2.0技术栈的选型思路,供各位在一线实战的架构师、工程师参考借鉴。对于一些暂时还没有成熟开源产品的微服务支撑模块,我也会给出一些定制自研的设计思路。
纯洁的微笑
2018/12/07
1.9K0
微服务2.0技术栈选型手册
爱奇艺微服务技术架构实践
为数以亿计的用户提供优质的视频服务的爱奇艺技术产品团队,为了适应业务的快速迭代和创新,并支撑海量的用户请求,很多团队都对各自的业务系统自发地进行了微服务架构的改造。
iginkgo18
2021/11/03
7370
爱奇艺微服务标准技术架构实践
为数以亿计的用户提供优质的视频服务的爱奇艺技术产品团队,为了适应业务的快速迭代和创新,并支撑海量的用户请求,很多团队都对各自的业务系统自发地进行了微服务架构的改造。
开发者技术前线
2021/03/03
6870
爱奇艺微服务标准技术架构实践
其实,对于微服务网关的主要功能和技术选型,你还需要深入理解下
微服务网关作为微服务后端服务的统一入口(Entry Point),它可以统筹管理后端服务,主要分为数据平面(Data Plane)和控制平面(Control Plane)。
愿天堂没有BUG
2022/10/28
9610
其实,对于微服务网关的主要功能和技术选型,你还需要深入理解下
何为微服务、网关、服务发现/注册?
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
1.1K0
微服务技术选型之路
本文以笔者个人经历讲述关于微服务方面的技术选型和相关知识点。微服务模式的项目从初建到上线部署应用,每一个环节都会涉及到相当多的技术细节(上线后的性能调优更需要)。本文着重介绍一套微服务搭建流程中面临的一些技术选型,战略性的技术方案及相关技术的简要介绍,不做每一项技术的深入说明。
Java_老男孩
2019/06/18
7390
微服务架构中配置中心的选择,Apollo值得拥有
目前公司内部微服务架构基础设施建设中,技术选型以Spring Cloud技术为主,也被大家俗称作“全家桶”。
肉眼品世界
2021/01/25
1.5K0
微服务架构中配置中心的选择,Apollo值得拥有
架构设计之微服务配置中心选型
在撰写这篇技术选型的文章之前,是比较犹豫的。因为,以其中一个开源项目开发者的身份,去写一篇三个开源项目的对比,即便很克制的去客观的比较,也很难有信服力。这就像,既是参赛选手,又想做裁判,观众肯定是不买账的。
Bug开发工程师
2019/05/16
3.4K0
架构设计之微服务配置中心选型
基于SpringCloud的微服务架构分析,神仙框架!
Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
搜云库技术团队
2021/10/20
1.5K0
基于SpringCloud的微服务架构分析,神仙框架!
基于Spring Cloud的微服务架构分析
Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本。虽然Spring Cloud时间最短,但是相比Dubbo等RPC框架,Spring Cloud提供的全套的分布式系统解决方案。
用户4283147
2022/10/27
3070
基于Spring Cloud的微服务架构分析
火热的微服务,低门槛、易上手的落地方法 | Q推荐
近十年来,微服务架构不断演进,成为当下最火热的后端架构之一。相比传统的单体架构,微服务架构具有灵活、可扩展、独立部署的特性,更有利于开发者管理和维护代码,快速提高研发交付效率。为构建更加灵活敏捷的系统和促进业务发展,许多企业纷纷将业务迁移到微服务架构。
深度学习与Python
2022/04/19
3590
火热的微服务,低门槛、易上手的落地方法 | Q推荐
推荐阅读
相关推荐
微服务架构技术选型思考
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文