如何提高微服务的幸福感?

提高个人人效的探索 当前信息勾勒出业界实践,结合研发效能的一线经验,可以先梳理一套从“科学原理”到“实践路径”的完整框架——这些是在大型互联网公司被验证过的真实打法。 阅读详情

点击“开发者技术前线”,选择“星标🔝”

在看|星标|留言,  真爱

2516b60e8824872cdaaa836356000a5e.png

Photo @  Andreas Weiland

回复“手册”,获取一份技术人全套技术手册

 文  | 亦盏


前言


随着微服务的流行,越来越多公司使用了微服务框架,微服务以其高内聚、低耦合等特性,提供了更好的容错性,也更适应业务的快速迭代,为开发人员带来了很多的便利性。但是随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题,我相信下面这些场景大家或多或少都遇到过。

场景一:发布是天大的事情,每一次的发布,都会出现执行到一半的请求中断掉,上游继续调用已经下线的节点导致报错的现象。发布时收到各种报错,同时还影响用户的体验,发布后又需要修复执行到一半的脏数据。


上述场景还是在新版本没有任何问题的情况下,如果新版本有问题,则会导致大量业务直接请求到有问题的新版本,轻则修复数据,重则严重影响用户体验,甚至产生资损。最后不得不每次发版都安排在凌晨两三点发布,心惊胆颤,睡眠不足,苦不可言。

场景二:大半夜某个服务节点出现异常,上游仍旧不断地调用,出现很多异常和各种报警短信。被报警吵醒后,想直接在线上修复,有点难,想保留现场又害怕拖垮整个应用,只好先重启为上。


但是这只是治标不治本的方式,因为很难复现从而无法有效定位,可能明天又被吵醒,继续重启。上述场景还是建立在报警系统比较完善的情况下,如果没有完善的报警系统,严重情况可能整个业务系统都被单机异常拖垮。

场景三:公司业务壮大了,部门组织变复杂后,微服务模块越来越多。我不清楚发布的服务到底被谁调用了,所以我不知道能否安全地下线一个服务。我这个应用的这个接口是个敏感接口,我只希望得到我授权的应用才能调用,而不是直接从服务注册中心得到我的地址就能直接调用,但是目前好像还做不到。

以上三个场景确实是使用微服务之后带来的痛点,这时候有个人告诉你,这些问题,我都知道怎么搞定,我有着丰富的经验,知道怎么解决,你肯定很开心。

然后高薪请进来了,确实不错,各种架构图、框架原理,框架修改点都非常清晰而且功能确实完美。最后评估对当前系统的修改成本,需要搭建三套中间件服务端,增加 4 个中间件依赖,修改几万行代码和配置。

“打扰了,还是业务重要,产品经理给的需求还没完成呢,刚刚说的场景也没那么痛苦,不就几个小问题嘛,真的没事。”

这时候 EDAS 告诉你,EDAS 的微服务解决方案,不需要做任何的代码和配置的修改,就能完美地解决上面说的三个场景中的问题。

你,不心动吗?

是的,你没看错,只要你的应用是基于 Spring Cloud 或 Dubbo 最近五年内的版本开发,就能直接使用完整的  EDAS 微服务治理能力,不需要修改任何代码和配置。

为什么 EDAS 用户可以轻松发布



传统的发布流程真的很容易出错

传统的发布流程中,服务提供者停止再启动,服务消费者感知到服务提供者节点停止的流程如下:

2be5446d43ea86178f42a4f0b9880fab.png

1、服务发布前,消费者根据负载均衡规则调用服务提供者,业务正常。

2、服务提供者 B 需要发布新版本,先对其中的一个节点进行操作,首先是停止 Java 进程。

3、服务停止过程,又分为主动注销和被动注销,主动注销是准实时的,被动注销的时间由不同的注册中心决定,最差的情况会需要 1 分钟。

如果应用是正常停止,Spring Cloud 和 Dubbo 框架的 Shutdown Hook 能正常被执行,这一步的耗时可以忽略不计。

如果应用是非正常停止,比如直接使用 kill -9 停止,或者 Docker 镜像构建的时候 Java 应用不是 1 号进程且没有把 kill 信号传递给应用。那么服务提供者不会主动去注销服务节点,而是在超过一段时间后由于心跳超时而被动地被注册中心摘除。

4、服务注册中心通知消费者,其中的一个服务提供者节点已下线。包含推送和轮询两种方式,推送可以认为是准实时的,轮询的耗时由服务消费者轮询间隔决定,最差的情况下需要 1 分钟。

5、服务消费者刷新服务列表,感知到服务提供者已经下线了一个节点,这一步对于 Dubbo 框架来说不存在,但是 Spring Cloud 的负载均衡组件 Ribbon 默认的刷新时间是 30 秒 ,最差情况下需要耗时 30 秒。

6、服务消费者不再调用已经下线的节点。

从第 2 步到第 6 步的过程中,Eureka 在最差的情况下需要耗时 2 分钟,Nacos 在最差的情况下需要耗时 50 秒。在这段时间内,请求都有可能出现问题,所以发布时会出现各种报错,同时还影响用户的体验,发布后又需要修复执行到一半的脏数据。最后不得不每次发版都安排在凌晨两三点发布,心惊胆颤,睡眠不足,苦不可言。

为什么 EDAS 用户不需要修数据

当您的应用部署到 EDAS 之后,EDAS 的无损下线功能会自动在发布新版本的时候做如下的增强,我们主要关注绿色部分的信息:

a0d617ff1e42aa66859a5d51a3624dc5.png

1、应用在发布前主动向注册中心注销应用,并将应用标记为已下线的状态。

2、在接收到服务消费者请求时,首先会正常处理本次调用,并通知服务消费者此节点已下线,服务消费者会立即从调用列表删除此节点。

3、在这之后,服务消费者不再调用已经下线的节点。

EDAS 的无损下线功能,将原来的从原来的 停止进程阶段 注销服务变成了 prestop 阶段注销服务,将原来的依赖于 注册中心推送,做到了服务提供者直接通知消费者从调用列表中摘除自己。使得下线感知的时间大大减短,从原来的分钟级别做到准实时,确保您的应用在下线时能做到业务无损。

金丝雀发布为 EDAS 用户再加一重保障

在普通的新版本发布场景中,默认情况下请求到各个节点的流量是均匀分布的。

假设服务提供者有 4 台,只要某个节点一发布新版本,就会有 25% 的流量打到新版本。如果新版本存在问题,就会影响线上 25% 的流量,轻则修复数据,重则严重影响用户体验,甚至产生资损。

cd0f6aa3432539a9b6f499850a91b1cb.png

EDAS 提供的金丝雀发布功能,支持 EDAS 用户在发布新版本之前就提前配置好金丝雀规则,使得只有符合流量特征的流量会调用到新版本,从而可以精准地控制调用到新版本的流量,进行新版本验证。

782fe01d7711f9a98d906fa0e2a01a65.png

如图所示,EDAS 的用户可以在发布之前配置好金丝雀规则。

这里以 Dubbo 为例,下图中配置表明 调用 

com.alibaba.edas.demo.EchoService.echo(String string) 的流量中,只有参数为 "helloworld" 的流量才会被路由到新版本。

99a962d671e2b975ef820b10980989c5.png

在服务提供者的将服务注册到注册中心前,EDAS 已经将新版本对应的金丝雀规则推送到服务消费者端。服务消费者在调用的时候,会根据金丝雀规则对流量进行分析,并与服务提供者列表中的元数据进行比对,选择正确的调用地址。

除了上图中演示的简单参数比对之外,EDAS 也支持解析更复杂的结构体进行规则配置。当然,如果某个场景只需要控制流量百分比就能满足需求,EDAS 用户也可以直接按比例进行灰度。

EDAS 金丝雀发布 将路由到新版本的流量,从所占总节点数的百分比转变成了根据流量特征进行控制。您可以自由地控制路由到新版本的流量,比如只将内部测试账号的流量路由到新版本,从而做到小心发布、大胆验证。所以,赶紧来 EDAS 进行轻松发布吧。

为什么 EDAS 用户不需要半夜醒来重启机器


开源框架有可能被单点异常拖垮整个应用系统

在微服务架构中,当服务提供者的应用实例出现异常时,服务消费者无法及时感知,会影响服务的正常调用,进而影响消费者的服务性能甚至可用性。

c22afd002d8daf35024200f217c7d853.png

在上图的示例场景中,系统包含 4 个应用,A、B、C 和 D,其中应用 A 会分别调用应用 B、C 和 D。当应用 B、C 或 D 的某些实例异常时(如图中应用 B、C 和 D 标识的各有 1个和 2 个异常实例),如果应用 A 无法感知,会导致部分调用失败;如果业务代码写的不够优雅,有可能影响应用 A 的性能甚至整个系统的可用性。

离群实例摘除给业务系统的稳定性加把锁

为了保护应用的服务性能和可用性,EDAS 支持检测应用实例的可用性并进行动态调整,以保证服务成功调用,从而提升业务的稳定性和服务质量。

如下图所示,EDAS 用户可以在控制台上对应用 A 进行如下配置,从而保证 A 应用的稳定性。

2a0028032cf4c2e86080f7bc120faf41.png

1、异常类型,网络异常指的是 IOException,业务异常在 Spring Cloud 框架中指的是返回值 http 状态码 为 500 ,Dubbo 框架中指的是返回值中包含 Exception。

2、QPS 下限,为了避免调用次数太少,随机性较大从而影响判断的准确性,您可以设置 QPS 的下限,只有 QPS 达到一定值后才进行离群摘除判断。默认为 1 ,可以配置成 0。

3、错误率下限,如果某台服务提供者返回值中,错误的比例超过了配置的这个值,会被判定成需要被摘除。

4、摘除实例比例上限,为了避免摘除过多的机器节点,导致剩余的节点数流量过载,需要配置一个摘除比例的上限,建议不超过 50%。

5、恢复检测单位时间,离群节点被摘除的动作是暂时性的,经过单位时间后,消费者侧会对此节点进行检测。如果节点已经恢复,会将其放回到节点中。如果节点持续被摘除,那么它被摘除的时间会线性增加到最大值。

基于离群实例摘除功能,EDAS 用户不会因为单机异常在半夜醒来重启机器,先安心地睡一觉吧,反正业务也不会受影响。醒来之后机器现场也还在,是拿着保留的现场进行分析,还是直接重启,任君选择。

为什么 EDAS 用户对自己的服务胸有成竹



服务查询一目了然

我们熟知的 zookeeper 组件并没有服务查询界面,Eureka 和 Nacos 这两个注册中心,虽然提供了网页版的控制台,但是在控制台上只能查询到服务的 IP 和 port 等基本的信息。

EDAS 用户在使用服务查询时,不仅能够查询到应用注册了哪些服务,对应的 IP 和 port 是什么,还能查询到服务包含的具体方法和参数类型,以及直观地看到服务被其他应用和节点的订阅情况。

623b9fe991cdfab104f7c73487f5529a.png

即使部门组织再复杂、微服务模块再多,EDAS 的用户也可以清晰地查询出服务的被调用情况,做到心中有数,在梳理服务依赖以及评估影响面的时候可以做到胸有成竹。

精准地控制服务调用的权限

业务发展后,服务还会遇到权限控制的需求。比如优惠券部门的某个应用,同时包含了优惠券查询接口 和优惠券发放接口。对于优惠券查询接口来说,默认公司内部的所有应用都有权限调用的;但优惠券发放接口只有客服和运营部门的某些应用才有权限调用。

如下图所示,EDAS 用户可以对自己的服务进行权限管理,这里以 Dubbo 为例,下图中配置表明,应用 cartservice 发布的 com.alibaba.edas.demo.EchoService 服务的 addItemToCart 的方法,只允许 frontend 这个应用调用。

03135bae124338ce36f9cc461de97836.png

除了支持对指定的接口添加鉴权规则之外,服务鉴权也支持对整个应用添加鉴权规则,还支持根据调用方 IP 进行鉴权。

精准的权限管理,可以让你更好地管理微服务调用的权限,保证业务的合规性,保障数据的安全。

EDAS 微服务治理使用成本真的很低


使用 EDAS 微服务治理的成本真的已经低得不能再低,不需要修改任何代码和配置,直接将应用部署上来就可以享受完整的 EDAS 微服务治理能力。

只要你的应用是基于 Spring Cloud 或 Dubbo 最近五年内的版本开发,就能直接使用完整的  EDAS 微服务治理能力,赶快来体验吧!

作者信息:

肖京,花名:亦盏,阿里云智能技术专家,Spring Cloud Alibaba PMC 。主要负责阿里云微服务产品的研发工作,关注微服务、云原生等技术方向。

综合考虑,Mybatis的优点是简单高效,优化起来也方便,比较符合现在的开发节奏,现在的互联网公司都是先快速开发占领市场,然后再优化代码。而且这个过程需求经常是变来变去的,开发人员也有流动性,这种情况下用Mybatis显然更加适合。

END

前线推出学习交流群,加群一定要备注:研究/工作方向+地点+学校/公司+昵称(如Java+上海+上交+可可),根据格式备注,可更快被通过且邀请进群,领取一份专属学习礼包扫码加我微信进群,内推和技术交流,大佬们零距离
历史推荐如何用 SQL 来查询 Elasticsearch 中的数据?
GitHub 开源!Facebook工程师出品了一份技术面试手册,史上最全,标星 3.2w!最全的 Vue 跨平台性能优化指南出炉
提升微服务架构的幸福感 微服务架构已经成为许多组织在构建和维护复杂应用程序时的首选方案。为了确保微服务架构的顺利运行和高效性,提升微服务的幸福感(即开发人员和维护人员的满意度)变得至关重要。本文将介绍一些提升微服务架构幸福感的实践方法,并提供相关的源代码示例。通过采用上述实践方法,可以提高微服务架构的幸福感,使开发人员和维护人员能够更轻松地构建、部署和维护微服务应用程序。这将有助于提高系统的可靠性、性能和可伸缩性。希望本文对您有所帮助! 阅读详情

相关推荐

声纹识别初学

最近开始关注声纹识别技术,发现国内做这个的确实没有几家,而且大多重点推声纹认证,用在公安司法金融领域,而我却关注文本无关的声纹识别,这里把我搜到的一点资料汇总在此. 发现njustzj001的专栏有两篇文章适合入门的我,贴下链接: 综述:  http://blog.youkuaiyun.com/xmu_jupiter/article/details/47209961 PLDA解释:  http://

u013452331的专栏 2758

别再用 kill -9 了,这才是微服务上下线的正确姿势!

点击关注公众号,Java干货及时送达作者:fredalxin地址:https://fredal.xin/graceful-soa-updown对于微服务来说,服务的优雅上下线是必要的。就上...

Java技术栈,分享最主流的Java技术 581

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 295

如何提升微服务的幸福感

Photo@Andreas Weiland 文 |亦盏 前言 随着微服务的流行,越来越多公司使用了微服务框架,微服务以其高内聚、低耦合等特性,提供了更好的容错性,也更适应业务的快速迭代,为开发人员带来了很多的便利性。但是随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题,我相信下面这些场景大家或多或少都遇到过。 场景一:发布是天大的事情,每一次的发布,都会出现执行到一半的请求中断掉,上游继续调用已经下线的节点导致报错的现象。发布时收到各种报错,同时还...

勇往直前的专栏 493

2024最新超详细无痛安装PyTorch,包括下载地址、环境配置与各种避坑指南

PyTorch更新很快,2024最新下载安装经验贴,包括anaconda+CUDA+cuDNN+PyTorch四部分的下载和安装。文章详细介绍了下载地址、环境配置、虚拟环境建立的问题,还温馨提示了各种闭坑指南。有需要的友友快过来康康!

qq_43596278的博客 11万+

error C2039: “int_least8_t”: 不是“`global namespace'”的成员

在向H.265的测试软件HM16.0中配置boost的时候,发现 include <boost/cstdint.hpp>的时候总是会报错:错误 11 error C2039: “int_fast16_t”: 不是“`global namespace'”的成员 D:\Program Files\Caffe\VSContact\boost_1_58_0\boost\cstdint.hpp ...

flyerene的博客 1万+

从开源自治到微服务云化,用这剂良药提升微服务幸福感

前言 微服务发展至今,因其高内聚、低耦合等特性,以及诸多开源方案带来的开放性,已成为提升架构效率的最佳实践之一。当一项技术或一个框架成为事实标准之后,我们会把更多的注意力聚焦在运维效率和应用可用性的持续提升上。相信下面这些场景大家或多或少都遇到过。 场景一:当业务达到一定的规模之后,微服务的数量和单个微服务实例的数就会变的很多,从而导致微服务注册中心需要管理很多服务地址,同时还需要给所有的上下游提供服务注册和服务发现的能力。 场景二:发布是天大的事情,每一次的发布,都会出现执行到一半的请求中断掉,上游

阿里云云栖号 1255

【逆强化学习-1】学徒学习(Apprenticeship Learning)

逆强化学习算法1:学徒学习。算法原理+算法步骤+代码+仿真:一个基于gym的小车上山的仿真。附赠学徒学习+Q-Table及学徒学习+DQN的全套代码。

体会编程语言独到的美 7494

青年PM倪超:想让程序员多一点点幸福感

摘要: 本文主人公倪超,在内部,同事都习惯叫他花名银时,是阿里云产品经理。前不久,他所负责的企业级分布式应用服务EDAS,荣获了公司2018财年年度最佳产品奖。在五四青年节来临之际,我们有幸近距离的探访了这位青年产品经理。21岁加入阿里巴巴集团,从一名实习生转变为主导平台级产品的PM,8年间,一直在阿里巴巴核心技术团队,倪超身上几乎所有的优点、缺点都打上了阿里巴巴的很多烙印,散发着浓浓的工程师特质...

maoreyou的博客 284

STM32与K210串口通信

这篇文章是为了填上一篇埋下的坑,k210和STM32通过串口通信,我是采用数据包的形式发送数据的,因为K210发送的数据有几种,采用数据包的形式发送比较安全。本文代码运行的平台是STM32F103C8T6和K210 Dock,只涉及到K210发送数据给STM32,stm32将接受到的数据显示到0.96寸OLED屏上。

qq_70715693的博客 3万+

【异常】XXL-JOB提示异常ERROR com.xxl.job.core.util.XxlJobRemotingUtil - connect timed out

打开XXL-JOB的ELK,发现一堆报错。

奶爸的编程之路,也就一周冷个三天 2047

LinkedIn 开源其开发人员工作效率与幸福感衡量框架

LindedIn 开源其 DPH 框架,帮助其他企业改进开发流程,提升开发人员的工作效率和幸福感。

PE_community的博客 611

华为OD新系统机试真题-8位LED控制器(C/C++/Py/Java/Js/Go)

华为OD新系统机试真题【8位LED控制器】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统4月19号机试真题【8位LED控制器】

qq_45776114的博客 597

微服务-(二)-微服务的拆分

单体架构是什么 一个归档包(列如WAR包)包含一个系统所有功能的应用程序,我们通常称为单体应用 单体架构的优点 架构简单 整个系统都是采用的统一的技术线及框架 开发、测试、部署方便 单体架构在是一直一个工程包,在同一目标下进行开发、测试更为方便,而部署也只需启动一个进程。 单体架构的缺点 复杂性高 对于中大型的系统,所有功能业务都在单体工程中完成,其代码量、业务复杂性相当...

a13762933116的博客 507

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

微服务最佳实践

微服务无疑是近几年最火的架构风格,其结合敏捷开发、DevOps,为技术团队应对飞速增长的业务需求和庞大的业务体系,提供了完整的理论支撑和技术支持。但是,通往美好的道路通常不是一帆风顺的,技术团队转型时会面对诸多的问题,如:服务划分、分布式事务、数据库设计等,踩过不少坑,犯过不少错,本文希望提供一份行之有效的开发实践,以提高技术团队的转型幸福感。 1. 理解微服务 理解微服务架构,理论支撑少不了...

渡风轩 716

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

从单体架构到微服务架构的那些事

尤其对于互联网软件产品,不变的是变化,而且产品上线后面向用户,可能功能并不满足市场需求,甚至是无用的,所以一开始就在技术层面考虑过多,追寻完美不变的方案,是不现实的,而且很容易因过度设计,导致实现过于复杂,增加太多其实不必要的工作量,从而影响项目按时交付,以及后期应对需求变化的调整效率,进而挫伤整个团队士气。因此,这项拆分重构的工作,一方面要按照微服务架构,把核心模块间的调用改为RPC方式,把非业务部分放到网关等,还要做大量业务类、接口、方法重新编写,以及删除重复代码等重构工作,很有挑战。

weixin_42029738的博客 597

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

四步轻松玩转微服务敏捷开发

作者:亦盏01微服务敏捷开发不简单Aliware01安得环境千万套,大庇开发小哥俱欢笑微服务给大家带来了敏捷开发的特性,基于敏捷开发带来的便利,让我们可以在同一个时间内多个迭代/featu...

阿里巴巴中间件 749

SpringCloud微服务实战(4)-服务拆分原则

而如果不需要处理太高的并发量,且应用程序已经基于传统的 Servlet 架构开发,并且部署在传统的 Servlet 容器中,那么使用传统的 Web 编程模式就可以了。例如,通过将付费客户的请求路由到容量更大的一组不同的服务器,应用程序可能会为付费客户提供比免费客户更高的 SLA。与由运行多个相同的应用程序副本组成的 X 轴和 Z 轴不同,Y 轴缩放将应用程序拆分为多个不同的服务。在需要处理更多请求时,可以轻松的添加更多的服务器实例,并且每个组件都可以根据其特定的需求进行垂直或水平扩展。

JavaEdge全是干货的技术号 2898

【Golang】Go Work 工作区实战:从零构建多模块微服务项目

本文详细介绍了Go 1.18引入的Go Work工作区功能,并通过实战演示如何从零构建一个包含共享模块和多个微服务的多模块项目。文章阐述了Go Work如何通过go.work文件实现本地模块间的直接引用,从而彻底解决多模块微服务开发中依赖更新繁琐、联调效率低下的痛点,并提供了环境配置、项目结构、依赖管理及最佳实践等完整指南。

weixin_29273849的博客 294

【翻译】小组讨论。开发者体验的下一步是什么?

当你投资于开发人员体验(DevEx)时,你可以感受到开发人员的生产力和幸福感,并因此获得利润和保留。在我们与Suhail Patel、Hannah Paine、Crystal Hirschorn、Charles Humble和Jamie Dobson的专家小组讨论中,看看DevEx为什么以及如何在资源配置、招聘、保留和创新中至关重要。 提到的关键资源:《如何衡量任何东西:寻找商业中的无形资...

超级码力 701

java计算机毕业设计(附源码)个人理财微服务系统(springboot+mysql+maven+论文)

首先,它可以帮助用户更好地管理个人财务,提供实时的财务状况分析和预测,帮助用户了解自己的财务状况,做出明智的决策。其次,该系统可以根据用户的风险承受能力、投资偏好和目标,为用户提供个性化的理财建议,帮助用户选择适合自己的投资产品和策略,实现财富的最大化。此外,个人理财微服务系统还可以提供丰富的金融知识和资讯,帮助用户了解金融市场的最新动态,提高用户的金融素养。总之,个人理财微服务系统的建设将为用户带来更加便捷、高效和智能的个人理财体验,有助于提高用户的生活质量和幸福感。文末可领取本课题的JAVA源码参考。

十甘程序设计 509

京东果然发福了:宣布涨薪两个月! 2 年内将员工平均薪资涨至 16 薪

推荐大家关注一个公众号点击上方 "编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文Life is a journey. What we shou...

程序员小乐 411

C++分布式计算库选型与实战:从MPI到Boost.Asio

分布式计算是现代后端与高性能计算领域不可回避的话题,其核心不是算法而是跨节点的数据通信。C++语言本身缺少通信原语,因此工程实践通常依赖第三方库完成消息传递、序列化与任务调度。消息传递接口MPI凭借集体通信原语与高度优化的传输层,成为集群计算的事实标准;Boost.MPI以类型安全接口降低开发成本;而对于动态任务分发与长连接管理,Boost.Asio等异步库则提供了更灵活的交互模型。掌握不同层次库的边界,合理划分数据面与控制面,结合实际场景选型与调优,才能让分布式程序在生产环境中稳定运行。本文围绕C++分布

weixin_34178244的博客 181

高效开发 Dubbo?用 Spring Boot 可得劲!

为什么80%的码农都做不了架构师?>>> ...

weixin_34216036的博客 94
上一篇: 旷视CEO竟遭监听敲诈:不给300万就卖敏感信息录音!网友:利好无人驾驶?
下一篇: 0.2秒居然复制了100G文件?
DevolperFront
博客等级 码龄8年 464粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值