0

建设微服务API网关的一些实践

随着这些年微服务的流行,API网关已经成为微服务架构中不可或缺的一环。一方面它承担着服务对外的唯一门户,一方面它提取了许多应用的共性功能。整体架构我们的Api网关目前的架构如上所示,可以看到Api网关处于一个什么位置,往上承接所有的南北流量,往下会分发流量到微服务应用或者BFF聚合应用,在BFF规范化之前我们仍然将其视为一个普通微服务应用。目前Api网关实现的功能包括请求分发、条件路由、Api管理、限流隔离、熔断降级、安全策略、监控报警以及调用链追踪等。我们的Api网关基于RxNetty开发,整个流程是异步响应式的,可以达到较高的单机并发。基于少造轮子的理念,Api网关的大部分功能都是结合现有...

阅读全文>>

0

OAuth2+JWT 实现权限验证

前言微服务架构下统⼀认证思路主要有两种形式:1、基于 Session 的认证⽅式在分布式的环境下,基于 session 的认证会出现⼀个问题,每个应⽤服务都需要在session中存储⽤户身份信息,通过负载均衡将本地的请求分配到另⼀个应⽤服务需要将 session 信息带过去,否则会重新认证。我们可以使⽤ Session 共享、Session 黏贴等⽅案。Session ⽅案也有缺点,⽐如基于 cookie ,移动端不能有效使⽤等2、基于 token 的认证⽅式。基于token的认证⽅式,服务端不⽤存储认证数据,易维护扩展性强, 客户端可以把token 存在任意地⽅,并且可以实现 web 和 a...

阅读全文>>

0

微服务架构实战:使用Jenkins实现自动化构建

使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微服务工程的CICD工作流程。CICD是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的总称,是指通过自动化的构建、测试和部署,实现软件产品可循环使用的快速交付流程。Jenkins是一个基于Java开发的功能强大的自动化构建工具,并且有一个非常丰富的插件仓库,可以很好地扩充和丰富其本身的功能。因此,Jenkins是实现自动化构建的一个...

阅读全文>>

0

SpringCloud微服务架构实战:高并发微服务架构设计

高并发微服务架构设计作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题:单个项目巨大而沉重,难以维护。系统稳定性得不到更有效的保证。怎样才能持续地提升系统的性能。怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。怎样才能更好地适应系统规模化的扩张。针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。目前来看,在互联网环境之中产生的微服务架构设计是一个比较理想的解决方案。微服务总体架构设计一个使用了微服务的电商平台的总体架构设计如图 2-1 所示。这是一个典型的微服务总体架构设计图,自上往下看,可以分为前台应用层、 AP...

阅读全文>>

2

中台和微服务架构规划-模块划分和接口服务识别定义

概述对于传统企业微服务架构转型,基于中台和微服务思想进行传统IT系统的改造和优化是一个重要的趋势,特别是在企业IT架构逐步走向云原生技术的时候,微服务本身也是关键的要素。而对于微服务整体的治理框架,我在前面给出一个大的框架图,如下:整个微服务治理框架覆盖了微服务全生命周期管理,其中本身又分为微服务架构规划和微服务开发和运维两个关键的阶段。而在微服务架构规划阶段最重要的又是两件事情,即微服务模块的拆分和拆分后的微服务模块应该提供的API接口服务识别和定义。而这个本身也是后续多个微服务进行并行开发和持续集成的基础。微服务划分大原则注意这里讲的是大原则不是绝对原则。对于传统的单体应用在转到微服务的时...

阅读全文>>

0

分布式架构的前世今生

一、前言随着社会的发展,技术的进步,以前的大型机架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处,那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉。二、背景说明我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的完善的。 在这个过程中,开发模式、技术架构等都会随着迭代发生非常大的变化。 而针对不同业务特...

阅读全文>>

0

架构师必懂的——下一代微服务ServiceMesh

今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企业的实践和思考,从个人视角出发,我为大家一一解答这些问题。微服务架构的核心技术问题在业务规模化和研发效能提升等因素的驱动下,从单块应用向微服务架构的转型(如下图所示),已经成为很多企业(尤其是互联网企业)数字化转型的趋势...

阅读全文>>

0

「微服务架构」微服务架构中的数据一致性

在微服务中,一个逻辑上原子操作可以经常跨越多个微服务。即使是单片系统也可能使用多个数据库或消息传递解决方案。使用多个独立的数据存储解决方案,如果其中一个分布式流程参与者出现故障,我们就会面临数据不一致的风险 - 例如在未下订单的情况下向客户收费或未通知客户订单成功。在本文中,我想分享一些我为使微服务之间的数据最终保持一致而学到的技术。为什么实现这一目标如此具有挑战性?只要我们有多个存储数据的地方(不在单个数据库中),就不能自动解决一致性问题,工程师在设计系统时需要注意一致性。目前,在我看来,业界还没有一个广为人知的解决方案,可以在多个不同的数据源中自动更新数据 - 我们可能不应该等待很快就能获...

阅读全文>>