首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微服务架构所面临的技术问题

微服务架构所面临的技术问题

原创
作者头像
程序员波特
修改于 2024-01-17 13:55:06
修改于 2024-01-17 13:55:06
2650
举报
文章被收录于专栏:魔法书魔法书

服务治理和负载均衡

微服务架构广泛应用在超高并发系统中,中后台服务集群的规模着实不小。就拿淘系的下单接口来说,一个下单指令要调用近二十个后台微服务协同完成任务(可能现在更多了),而在双11这类业务场景下,核心链路的一个微服务背后的虚机数量都有近万台。

因此,服务与服务之间的调用,就成了微服务架构需要解决的第一个问题。与此同时,大规模集群中虚机的。上线下线是每天的日常任务,集群的扩容缩容也很常见,我们的微服务架构需要探知到集群中各个服务节点的状态变化,这样就知道哪些节点是可以正常提供服务的。我们管这个领域叫做服务治理

与服务治理搭档的还有负载均衡,面对茫茫多的服务器,如何将海量用户请求分发到不同的机器。考虑到有的机器性能比较弱,或者机房带宽不大,网络响应慢,如何根据实际情况动态地分发服务请求?这个领域就是负载均衡需要解决的事情。

服务容错

地盘大了难免杂事不断,集群中难免有那么几台机器跑着跑着就慷慨就义了。那么对于其它的服务调用者来说,如果不巧正好调用到了这些挂掉的机器,那自然会获得到失败的Response。面对这种情况,后台服务可有另一条路走?

在高并发场景下,有的服务会承担较大的访问请求,这有可能导致响应时间过慢,甚至会响应超时。那调用方在超时后经常会发起重试,这样会进一步增加下游应用的访问压力,进而导致一个恶性循环。那么面对这种情况,我们有解决方案吗?

以上就是微服务领域中降级和熔断技术需要解决的问题,我们管这些叫做服务容错。

配置管理

大家平时在项目中都怎么管理配置项呢?使用配置文件?如果我有一个业务场景,需要随时调整配置,这种配置文件的管理方式可能就玩不转了,我们总不能每次改配置的时候都要重启机器吧。

那么把配置项存到数据库里?可以倒是可以,但是访问量增加的时候也会将压力传导到数据库,数据库往往是比较弱不禁风的一环,很可能被压垮。那么放到缓存里?这一定程度上解决了性能问题,不过在某些业务场景下还是不好用,比如我希望给不同服务器配置不同属性值,指定name属性在某100台机器中的值是张三,在剩余机器中的值是李四。

以上问题在微服务领域也不是什么大问题,服务配置管理就是专门解决这类问题的利器。

服务网关

我们的系统对外提供的网络访问入口只有一个,这通常就是一个域名网址。但是这套系统后面的服务器可有千千万,那么在微服务架构下,是如何将用户请求转发到每个不同的服务器上的呢?这就是服务网关需要解决的事情。

调用链路追踪

前面提到一个淘系下单场景会调用一连串的微服务,我们YY这么一个线上故障,有个用户买了两只大猪蹄子,结果东西送到家变成了两只鸡爪子。店小二说没发错货啊不信自己看订单,打开一看还真是,下单的时候选的猪蹄子,下单以后就成了鸡爪子。

上面这个问题出在整个下单链路哪个环节呢?是订单中心搞错了商品ID,还是购物车页面传了错误ID给订单系统,或者说搜索页面一键下单功能没取到正确的ID?迷雾迷雾在迷雾,怎么拨开迷雾见真相?

调用链追踪,从前到后整个调用链路全景数据展现,用事实说话,从此甩锅更加精准!

消息驱动

消息驱动是老朋友了,相信大家在项目中也经常使用消息中间件。我们试想这样一个场景,双11当天24点0分0秒一过,数万万的败家亲们一拥而上,下单接口调用量飙升,就快到了崩溃边缘。那我们后台的订单服务如何才能顶住这一波波攻势?亲,消息驱动组件加.上限流组件来做削峰填谷了解一下?

不仅如此,微服务各个系统之间的解耦也可以用消息组件来实现。其实消息驱动在微服务里的实现也就是多做了几层抽象,调用起来更加方便,个中滋味还请同学们亲身体验。

限流

再厉害的系统也有性能瓶颈,强如阿里打造的双十一也抵不住全国剁手族齐。上阵,限流是最经济高效,在源头处消减系统压力的手段微服务的后台服务节点数量庞大,单机版限流远不能解决问题,我们需要在服务器集群这个范围内引入分布式限流手段。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微服务入门学习:SpringCloud、SOA、集群、分布式学习
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
程序员洲洲
2024/06/07
1830
微服务入门学习:SpringCloud、SOA、集群、分布式学习
Spring Cloud整体架构解析
Spring Cloud的中文名我们就暂且称呼它为“春云”吧,听上去是多么朴实无华的名字,不过呢一般名字起的低调的都是厉害角色,我们就看看Spring Cloud都提供了哪些靠谱功能吧。
程序员波特
2024/01/17
3170
去哪儿旅行微服务架构实践
作者 | 朱仕智 编辑 | 贾亚宁 本文由极客时间整理自去哪儿旅行基础架构部高级技术总监朱仕智在 QCon+ 案例研习社的演讲《去哪儿旅行微服务架构实践》。 你好,我是朱仕智,在去哪儿网负责基础架构,主要包含后端架构、大前端架构、质量保障、基础云平台等工作,近期主要在公司落地云原生和数字化管理。 今天我带来的主题是去哪儿旅行微服务架构实践。我将从以下几个方面进行介绍: 背景介绍 微服务架构模式的最佳实践 微服务开发效率的提升实践 微服务治理的实践 ServiceMesh 尝试 一、背景介绍 首
深度学习与Python
2023/03/29
5190
去哪儿旅行微服务架构实践
深度好文:详解微服务架构
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。
DevOps时代
2019/08/28
8980
微服务系列 2:微服务化框架的模型和治理能力设计
紧接上一篇,微服务系列 1:微服务化框架落地的挑战和核心需求,那么基于这些核心诉求,我们整个的微服务框架的模型是如何?又该具备哪些核心的治理能力呢?通过本文来一一知晓!
Allen.Wu
2023/03/01
8930
微服务系列 2:微服务化框架的模型和治理能力设计
SpringCloud——微服务介绍+系统架构
* 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护* 项目模块之间紧密耦合,单点容错率低* 无法针对不同模块进行针对性能优化和水平扩展
用户10196776
2022/11/22
1.2K0
SpringCloud——微服务介绍+系统架构
【云原生-白皮书】简章2:深入理解DevOps+微服务
在搞懂DevOps和微服务之前,需要先搞懂什么是单体应用/单体架构。简单来说,就跟在校的一些小项目一样,项目的Demo写好了,找一台服务器安装环境,然后把jar包远程上服务器,然后跑起来服务就可以了。这个时候进行简单的服务监控也不难,如果项目出了问题,查看一下运行日志,就可以知道哪一步出问题了。如果懂一些脚本,也可以写一些脚本分析日志,解放双手监控服务器。这种单体架构就是采用瀑布流方式开发的,服务的流程就是:设计 -> 开发 -> 测试 -> 部署 。
程序员洲洲
2024/06/07
1700
【云原生-白皮书】简章2:深入理解DevOps+微服务
聊聊最新微服务架构技术栈选型
目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇文章主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技术吧。
码猿技术专栏
2023/05/01
1.1K0
聊聊最新微服务架构技术栈选型
大家都在说的微服务架构究竟指的是什么?
本篇将主要讲解微服务架构究竟指的是什么,它包括了哪些核心组件,它又能给我们带来哪些帮助。
brookwang
2022/06/24
9150
大家都在说的微服务架构究竟指的是什么?
交易系统架构演进之路(五):服务治理
微服务架构下,会引入很多服务问题,所以少不了需要做服务治理,包括:服务注册与发现、服务配置、服务限流、服务熔断、服务降级、负载均衡、链路追踪等。
Keegan小钢
2021/02/19
9440
交易系统架构演进之路(五):服务治理
微服务架构下的核心话题 (三):微服务架构的技术选型
为了实现基于微服务开发的产品,或者说为了将单体应用重构为微服务架构时,将面临着众多技术框架的选择。大公司往往会有专门的部门或团队来负责自主研发自己的框架,以满足产品的需要,但是对于一般的中小型企业,选择合适的开源框架就显得更接地气了。本章将简单介绍微服务中,在技术选型时需要注意哪些原则,一些常用的开源技术框架,希望能够为大家在进行技术选型、调研时提供一些思路方向。
xcbeyond
2020/03/25
7490
微服务架构下的核心话题 (三):微服务架构的技术选型
基于SpringCloud的微服务架构演变史?
在公司业务初创时期,面对的主要问题是如何将一个想法变成实际的软件实现,在这个时候整个软件系统的架构并没有搞得那么复杂,为了快速迭代,整个软件系统就是由“App+后台服务”组成,而后台服务也只是从工程角度将应用进行Jar包的拆分。此时软件系统架构如下:
用户5927304
2019/07/31
3540
微服务架构复杂吗?全新角度详解,看完这篇你就明白了!
几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据。
Bug开发工程师
2020/03/12
5180
微服务架构复杂吗?全新角度详解,看完这篇你就明白了!
微服务相关原理与治理
微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如 Dubbo 和 Spring Cloud。
JQ实验室
2022/02/09
3470
微服务相关原理与治理
SpringCloud简介与微服务架构
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
BUG弄潮儿
2021/02/03
6670
SpringCloud简介与微服务架构
快速学习-微服务简介
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。
cwl_java
2020/08/28
6900
快速学习-微服务简介
都2023了,还有人不了解微服务吗
当前互联网界,不管是做 2B 端【面向企业】,还是 2C 端【面向个人用户】产品,微服务开发已经是遍地开花,单体结构的系统大多只存在于传统软件和中大型国企架构里。
xin猿意码
2023/10/18
3480
都2023了,还有人不了解微服务吗
微服务架构技术有哪些_微服务架构组件
技术实现取决于需求,也就是微服务架构需要的考虑的基本技术问题。一个基本的微服务架构需要实现基本的五大核心功能:服务注册和发现、服务间通信、服务容错、数据管理和API网关,基本实现需求如下:
全栈程序员站长
2022/11/01
1.4K0
基于 Docker 的微服务架构实践
基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的快速发展。本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结。希望给在创业初期探索如何布局服务架构体系的 DevOps,或者想初步了解企业级架构的同学们一些参考。
烂猪皮
2018/08/03
2.6K0
基于 Docker 的微服务架构实践
微服务中的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
1.1K0
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
推荐阅读
相关推荐
微服务入门学习:SpringCloud、SOA、集群、分布式学习
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档