Dubbo

一文探讨 RPC 框架中的服务线程隔离

北城以北 提交于 2020-10-29 08:54:23
Kirito 推荐语:最近秋招开始了,很多学生开始准备起了秋招,有很多人想知道进一些有名的互联网公司实习有什么要求,正好最近跟一位阿里春招的实习小伙子聊了一些 RPC 相关的知识点,于是我把这篇他的思考转发过来,给大家参考下,我觉得有这样的实力,进大厂实习应该是没有问题的。以下是原文: 自从春招实习之后,眼界真的就一下子开阔起来了,也感觉到了以前的自己好菜啊(虽然现在也是,笑~)。果然学习之路不能停! 微服务如今应当是一个优秀的程序员必须学习的一种架构思想,而RPC框架作为微服务的核心,不说读一遍源码吧,起码它的实现原理还是应该知道的。 然而目前的RPC服务框架,大多存在一个问题,就是当服务提供端Provider应用中,有的服务流量大,耗时长,导致线程池资源被这些服务占尽,从而影响同一应用中的其他服务正常提供。为此,这次博文主要介绍一下我对于这方面的思考。 前言 在进入正文之前,可以先看一下阿里中间件岛风大佬的这篇博文( 传送门 ),这篇博文复现了Dubbo应用中,线程池耗尽的场景。这其实在线上是十分普遍,解决方法无非是根据业务调整参数,或者引入其他的限流、资源隔离框架,例如Hystrix、Sentinel等,使得资源间互不干扰。其实本身Dubbo也可以对不同的服务配置不同的业务线程池(通过配置protocol)从而实现服务的资源隔离,但是这种方式的弊端在于,一旦服务增多

如果张东升是个程序员,剧情是怎样的?

泄露秘密 提交于 2020-10-28 13:09:06
文末赠书活动 电视剧《隐秘的角落》最近非常火爆,虽然已经完结了,但是这部剧的热度依然很高,大家都在热议剧中的细节。张东升作为该剧男主。 今天这篇文章把主人公张东升改写成互联网程序员,会非常有意思的。不多说,开始正文。。 张东升是一家互联网公司的程序员,一直以来都勤勤恳恳老实工作。 可最近一段时间,老板接了几个项目回来,不但开启了996的工作模式,更要命的是频频更改需求,弄得大家是敢怒不敢言。 时间一久,东升慢慢开始消极怠工,晚上也不怎么加班了。终于有一天,和老板在会议室吵了起来,老板决意让其忙完手头的项目就离职。 老板看大家最近一段时间都很辛苦,决定组织一次团建,在群里询问大家有什么活动建议。 这时,张东升提议:“最近大家都工作挺累,也没有什么机会锻炼,身体要紧,要不一起去爬六峰山吧” 东升的提议获得了不少人的赞同,团建活动就这么定了下来。 团建这天,爬至半山腰,东升问老板:“您看我还有机会吗?” 老板看了他一眼,没有说话,继续抽烟。 爬至山顶,大家三三两两都在拍照发朋友圈。 这时东升拉住老板到一旁说给他拍照,老板知道东升是为讨好自己,也就没有拒绝。 东升举起手机,却说老板衣服有褶皱,上前为其整理,竟趁其不备将其推下山崖··· 晚上,张东升还在电脑前调试着代码,突然,一封主题为“警告”的邮件窗口从侧边弹了出来。 东升的心跳立刻加速,小心翼翼的点开了这封邮件,正文只有四个字:

Java程序员非要进大厂才能拿到年薪50W+?

余生颓废 提交于 2020-10-28 08:42:29
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

Non-resolvable parent POM

旧城冷巷雨未停 提交于 2020-10-28 04:45:30
  今天导入公司项目,maven聚合项目,但是项目目录结构不正确,内层的项目的parent不是外层项目,这个......有点无语,结果导入直接报错。同事说,我们导入是好好的啊,原来他们用的是eclipse我用的是idea,eclipse导入maven项目可以同时导入多个,而idea每次只能打开一个,但是可以使用maven面板手动添加多个,可是手动添加的也会遵循实际目录结果,视内层项目为外层项目的子项目。   dubbo-admin:报错信息:[FATAL] Non-resolvable parent POM for com.alibaba:dubbo-admin:[unknown-version]: Could not find artifact com.alibaba:dubbo-parent:pom:2.5.4-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 12, column 10   当设置了 <parent/> 时,是需要有一个relative path来查找父项目的pom.xml的,而如果没有,那么默认的父项目pom.xml就在该pom.xml的父附录中。如果没有,就会根据groupId和artifactId在本地和远端maven仓库中找。很不幸,这个父pom.xml对应的不是外层项目

Java程序员非要进大厂才能拿到年薪50W+,从而告别重复的CRUD?

别等时光非礼了梦想. 提交于 2020-10-27 18:33:50
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

IT人的提升实操心得

对着背影说爱祢 提交于 2020-10-27 15:04:49
这里记录下第一次和大佬级别的人物对话,事先准备了一堆问题,可临了又说不出个所以然,忐忑呀,不过挑了几个重点的问题,骆总给我的回复也是一针见血,指出了我现阶段存在的种种问题,道破了困扰许久的问题,我相信我目前遇到的,存在的问题也是大多数求职进阶路上的coder们正在面临的,或者已经经历过了的,轻喷。 从事IT行业,不管是主动还是被动,大家或多或少看到了他的发展,也预料过他的前景吧,尤疫情之后,蓬勃生机常在,就20日晚蚂蚁公司整栋的狂欢,作为拼命一线的码农来说,一夜之间的百万财富,我预想得到他们的欢呼是有多么的歇斯底里,歌声是有多么的嘹亮,这么看来从事这个行业真的是西天取经的路。 但是不少人会说我卖职业诱惑,我想卖职业诱惑的事交给培训机构就行了,我不卖诱惑,也不贩卖焦虑。 提起职业焦虑,35岁的梦,IT人的痛,从前段时间的996.ICU到如今的软件园跳楼事件,真的莫名觉得惋惜,5年的工作经验,忍忍总会过去的,翻越大山的人,最后被小石子绊倒了。但愿天堂没有加班!文末我会针对职业焦虑阐述下自己的一些看法。 下面是我这次对话的记录总结,提醒我自己,也鞭策我自己。 第一:如何学习?怎么学习?怎么快速突破自己? 从事这个行业,我的工作年限不长,差半年到三年了,给我的第一感触就是需要花费大量的精力学习,不停的“缝缝补补”,不间断断的磕磕绊绊,但苦于市面上可获取知识的地方太多,渠道庞繁纷杂

阿里 双11 同款,流量防卫兵 Sentinel go 源码解读

*爱你&永不变心* 提交于 2020-10-27 12:47:51
简介: 本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 作者 | 于雨 apache/dubbo-go 项目负责人 本文作者系 apache/dubbo-go 项目负责人,目前在 dubbogo 项目中已内置可用 sentinel-go,如果想单独使用可参考 在 dubbo-go 中使用 sentinel 一文,若有其他疑问可进 dubbogo社区【钉钉群 23331795】进行沟通。 导读 :本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 1 基本概念 Resource 和 Rule 1.1 Resource // ResourceType represents classification of the resources type ResourceType int32 const ( ResTypeCommon ResourceType = iota ResTypeWeb ResTypeRPC ) // TrafficType describes

阿里 双11 同款,流量防卫兵 Sentinel go 源码解读

我与影子孤独终老i 提交于 2020-10-26 11:28:01
简介: 本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 作者 | 于雨 apache/dubbo-go 项目负责人 本文作者系 apache/dubbo-go 项目负责人,目前在 dubbogo 项目中已内置可用 sentinel-go,如果想单独使用可参考 在 dubbo-go 中使用 sentinel 一文,若有其他疑问可进 dubbogo社区【钉钉群 23331795】进行沟通。 导读 :本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 1 基本概念 Resource 和 Rule 1.1 Resource // ResourceType represents classification of the resources type ResourceType int32 const ( ResTypeCommon ResourceType = iota ResTypeWeb ResTypeRPC ) // TrafficType describes

3 月,跳不动了?

ε祈祈猫儿з 提交于 2020-10-26 01:12:26
不少单位已经开始复工了,跳槽季已经开始。虽说大多数互联网企业,像腾讯、字节跳动等,都已经开通远程面试环节,而且薪资有走高的趋势。但据目前看,面试难度大了许多,甚至有朋友面试后怀疑:自己真的落伍了? 比如,面试高级开发岗位时,面试官不仅考察基础能力,更会重点考察高并发、分布式等架构相关的技术背后的思考逻辑,比如:微服务,负载均衡,Redis,RPC等。(今年 Java 面试到底聚焦在知识点?文末扫码获取) 但这些技术包含了 N 多优化、N 多细节,对于一些 coding 的朋友,由于接触不到一线实战架构设计,想必并不是很了解。 刚好,趁着这段时间,整理了一套 “ 微服务+分布式 ” 的视频干货,讲解很透彻。今天分享给大家。这份资料 尤其适合 以下人群: 1.没有用过微服务技术,只会用传统的 SSM 框架 2.用过 Spring Cloud、Dubbo等技术,但是只限于使用,遇到问题基本无法解决 3.从来没有系统学习微服务、分布式架构,觉得架构设计是遥不可及的 4.对于微服务、分布式技术有所了解,但尚没有设计高可用高并发的实践经历 学完这份视频你将获得哪些收获? 理解当下最火热的微服务架构原理及其开源框架; 触及一线大厂所配备的微服务核心技术内幕知识; 对照自己掌握知识点进行查漏补缺,帮助扫除知识盲区、重构知识体系。 视频围绕“ 如何设计高可用高并发的微服务架构? ”的主题

直观讲解一下 RPC 调用和 HTTP 调用的区别!

大憨熊 提交于 2020-10-25 12:55:46
作者:浮生忆梦 blog.csdn.net/m0_38110132/article/details/81481454 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive! 本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹啦!下面来具体说一说RPC服务和HTTP服务。 OSI网络七层模型 在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层:(从上到下) 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据; 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输; 第七层:物理层。这一层主要就是传输这些二进制数据。 实际应用过程中