Dubbo

Dubbo 实战 一 为什么需要 dubbo 很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的,那么,dubbo是怎么被提上日程的呢? 在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但是,随着流量的增大,常规的垂直应用架构已无法应对,所以,架构就发生了演变。 1 单一应用架构 2 应用和数据库单独部署 3 应用和数据库集群部署 4 阅读详情

1、原理机制以及实现分析

2、给dubbo接口添加白名单

请求处理过程
1. client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的
2. 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object
3. 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object)
4. 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去
5. 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。
6. 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传)发送给客户端,客户端socket连接上专门监听消息的线程收到消息,分析结果,取到ID,再从前面的ConcurrentHashMap里面get(ID),从而找到callback,将方法调用结果设置到callback对象里。
7. 监听线程接着使用synchronized获取回调对象callback的锁(因为前面调用过wait(),那个线程已释放callback的锁了),再notifyAll(),唤醒前面处于等待状态的线程继续执行(callback的get()方法继续执行就能拿到调用结果了),至此,整个过程结束。
- 当前线程怎么让它“暂停”,等结果回来后,再向后执行?
答:先生成一个对象obj,在一个全局map里put(ID,obj)存放起来,再用synchronized获取obj锁,再调用obj.wait()让当前线程处于等待状态,然后另一消息监听线程等到服 务端结果来了后,再map.get(ID)找到obj,再用synchronized获取obj锁,再调用obj.notifyAll()唤醒前面处于等待状态的线程。
- 正如前面所说,Socket通信是一个全双工的方式,如果有多个线程同时进行远程方法调用,这时建立在client server之间的socket连接上会有很多双方发送的消息传递,前后顺序也可能是乱七八糟的,server处理完结果后,将结果消息发送给client,client收到很多消息,怎么知道哪个消息结果是原先哪个线程调用的?
答:使用一个ID,让其唯一,然后传递给服务端,再服务端又回传回来,这样就知道结果是原先哪个线程的了。

Java标准的远程调用协议
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作
(1) 约束:
参数及返回值需实现Serializable接口
dubbo配置中的超时时间对rmi无效,需使用java启动参数设置:-Dsun.rmi.transport.tcp.responseTimeout=3000,参见下面的RMI配置。
(2) 配置:
dubbo.properties: dubbo.service.protocol=rmi

Linux内存压力测试工具【memtester】详且精 对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。 阅读详情

相关推荐

简单记录一次拿网站后台的过程

本文章重在让大家了解拿后台的逻辑与流程,请不要利用此文章的内容对别人的网站进行攻击破坏,否则后果自负,作者不承担任何责任。

kk的博客 920

Apache Dubbo序列化白名单配置问题解析

在使用Apache Dubbo 3.2.5版本时,开发人员遇到了一个关于序列化安全白名单配置的特殊问题。当尝试通过修改`security/serialize.allowlist`文件来添加自定义类`benchmark.service.UserServiceResponse`时,发现在打包后的JAR文件中,原有的白名单配置被Dubbo框架默认配置覆盖,导致自定义类无法被正确序列化。 ## 问题现象...

gitblog_00548的博客 585

反激开关电源变压器设计实战:从理论到绕制的完整流程解析

本文详细解析了反激开关电源变压器的完整设计流程,从核心理论到实战绕制。文章以24W电源为例,手把手讲解如何根据输入输出电压、功率和频率等关键参数,计算匝比、峰值电流、电感量,并完成磁芯选择、匝数确定、气隙计算及线径选取。重点阐述了CCM模式下的设计要点与绕制工艺,旨在帮助工程师设计出稳定高效的反激变压器,避免常见陷阱。

weixin_29305313的博客 684

Dubbo 黑白名单机制详解

黑名单:指的是不允许访问的 IP 地址、服务或用户列表。黑名单中的条目将被拒绝访问系统或服务。白名单:指的是允许访问的 IP 地址、服务或用户列表。白名单中的条目将被允许访问系统或服务。在服务治理中,黑白名单机制可以用于控制哪些客户端能够调用服务,防止非法或不受信任的客户端进行访问。Dubbo 的黑白名单机制为服务提供了强有力的访问控制手段。通过合理配置黑白名单,企业可以有效地提升系统的安全性和可控性。在使用过程中,务必根据实际需求进行精细化管理,并定期审查和更新配置。

FireFox1997 1036

Windows 11下manage-bde命令实战:BitLocker锁了别慌,手把手教你用命令行找回数据

本文详细介绍了在Windows 11系统下使用manage-bde命令解锁BitLocker加密驱动器的实战方法。通过命令行诊断、恢复密钥获取、解锁流程演示及高级故障排除,帮助用户在系统锁定后快速找回数据,特别适合IT技术人员和遇到紧急情况的用户。

weixin_30902251的博客 329

射频功率放大器设计实战:从理论到Layout的全流程解析

本文以一款40W、960MHz LDMOS功率放大器为例,系统解析了从理论分析、仿真设计到版图实现的射频功率放大器设计全流程。内容涵盖AB类放大器选型、核心指标定义、稳定性分析、Load-Pull/源牵引仿真、史密斯圆图匹配、偏置网络设计,以及最终的谐波平衡仿真与版图电磁验证,为工程师提供了一套从理论到实践的完整设计方法论。

weixin_29266007的博客 249

dubbo版本升级关于序列化问题

最近两年公司项目dubbo进行升级,从2.5.6升级至2.6.9 至今又升级为2.6.10 主要升级的原因是序列化存在漏洞,需要使用hession协议进行序列化操作。 2.6.9 在2.6.9引入白名单,因为hessian默认支持java.*的所有类进行序列化,所以重写AbstractHessian2FactoryInitializer配置白名单参数 是否开启白名单 *static String WHITELIST = "dubbo.application.hessian2.whitelist";*

LALOUY的博客 6026

UCOS-III 系统移植

UCOSIII系统移植到GD32F303详细过程 工程代码:https://github.com/jslaobing/techIot_ucosiii_porting

TechIoT - 探索物联网与嵌入式系统 2087

给dubbo接口添加白名单——dubbo Filter的使用

在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。 dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo接口的IP白名单。 扩展Filter 实现com.alibaba.dubbo.rpc....

xiaomin1991222的专栏 782

C# 从数秒到毫秒:MySQL+Redis百万数据优化实战全解析

在处理百万级数据时,传统单体数据库常面临查询效率低下、数据库负载过高和用户体验差等问题。为解决这些性能瓶颈,可以采用MySQL分库分表、Redis缓存和异步统计的组合策略。 数据库分片:通过水平分表和分库实现,将单表数据分散到多个物理表或数据库实例中,降低单点负载。 Redis缓存:利用Redis缓存高频数据,减少数据库查询压力,提升响应速度。 异步统计:通过消息队列(如RabbitMQ)解耦统计任务,后台处理非实时任务,避免阻塞主流程。 这些优化策略能够显著提升系统性能,确保在高并发和大数据量场景下的稳定

墨夶的博客 852

提示词编程在自动化内容审核中的应用

文章标题 提示词编程在自动化内容审核中的应用 关键词:提示词编程,自动化内容审核,人工智能,算法原理,系统架构设计,项目实战 摘要 本文旨在探讨提示词

AI天才研究院 1252

Dubbo新版本(>3.2)序列化问题

Dubbo >= 3.2时一些类序列化时会有异常。

u010351766的专栏 2455

Linux(31)Rockchip RK3568 Ubuntu22.04上部署 Docker: 问题与解决方案

本博客在总结这些问题及其解决方案,为遇到类似问题的兄弟提供参考,如果我后续有碰到其他Docker 问题也会在此更新补充。

我其实什么都不会 1646

Dubbo是什么?Dubbo干什么?Dubbo怎么用?

Dubbo是什么? Dubbo官网地址:http://dubbo.apache.org Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。 什么是RPC? RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用

好学而不勤问非真好学者 5万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Dubbo - Dubbo的SPI机制

SPI是什么? SPI全称service provider interface,比如你有一个接口,现在这个接口有三个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要SPI了,需要根据指定的配置或者默认的配置,去找到对应的实现类加载进来,然后用这个实现类的实例对象。 举个例子: 你有一个接口A,A1/A2/A3分别是接口A的不同实现,你通过配置接口A = 实现类A2,那么系统在...

yang的博客 3万+

蓝牙模块HM-10手册

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

精通Dubbo——Dubbo支持的协议的详解

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。dubbo协议缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。 连接个数:单连接 连接方式:长连接 传输协议

路漫漫,水迢迢 7万+

Dubbo框架

Dubbo是一款高性能、轻量级的RPC服务开发框架,是由阿里巴巴公司开源并贡献给Apache基金会的。他可以通过RPC快速调用远程服务,并且提供了很多功能,例如负载均衡、服务注册和发现、容错机制等,使得分布式服务的开发变得更加简单和方便。RPC:Remote Procedure Call Protocol,远程过程调用协议。

wwzzzzzzzzzzzzz的博客 2392

Dubbo Admin整合Nacos、Dubbo

1.服务提供者 1.依赖 版本号为2.2.7.REALEASE <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> 2.配置文件 网上大多数配置都是用的zookeeper,笔者之

qq_42739776的博客 5611

Apache Dubbo 带你去dubbo的世界走一遭_dubbo hub

通过API编码方式组装配置,启动Dubbo,发布及订阅服务,API属性与XML配置项一一对应,比如:ApplicationConfig.setName(“xxx”)对应<dubbo:applicationname=“xxx”/>。当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

2501_90326514的博客 778

Dubbo--dubbo-admin

其他网址

IT利刃出鞘的博客 4907

[dubbo] 浅谈dubbo-分组使用

前言 公司服务器全部宕机了.两三天之内修不好, 那咋整,所有项目不能停了啊.所以就先买了一台将就着用.只有一台,要跑起来那么多服务,所以我就坚持着能省就省.只有一台zk和dubbo服务器,通过dubbo的group来实现隔离环境. 当然dubbo的group本意不应该怎么用的. 使用 我们先来瞅瞅dubbo group 本意应该咋用. 当一个接口有多种实现时, 可以用group区分

odelia的博客 1万+

Dubbo—dubbo admin安装

dubbo admin介绍:Dubbo Admin 运维指南 | Apache Dubbo 1.所需依赖介绍   Dubbo-admin是Dubbo RPC框架的“管理端”,可以对注册的服务(provider)和服务调用方(comsumer)进行服务治理,包括路由、监控、配置等功能;   Dubbo一般都是使用zookeeper来进行管理服务注册,而dubbo-admin查看哪些注册了哪些服务,也是需要从zk上查询的,所以Dubbo-admin需要依赖于zookeeper;   另外,Dubbo-a

sanmi8276的博客 2571

Dubbo 及Dubbo-Admin部署

Dubbo 介绍及 Dubbo-Admin 部署

weixin_45881674的博客 1699

Dubbo基本用法-Dubbo Provider配置

Dubbo基本用法 本章节主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。 按照功能角度进行划分,可以分为Dubbo Provider和Dubbo Consumer。接下来章节中,分别对dubbo provider和Dubbo consumer进行讲解。   Dubbo Provider配置   Pro...

Java烂猪皮 1万+

Dubbo环境搭建、springboot整合Dubbo、dubbo常用配置、Dubbo高可用、dubbo原理

1、分布式基础理论 2、dubbo核心概念 3、dubbo环境搭建 3.1、【windows】-安装zookeeper 3.2、【windows】-安装dubbo-admin管理控制台 3.3、 监控中心dubbo-monitor-simple 4、整合springboot 5、 dubbo配置 5.1、配置原则 5.2、超时时间 6、高可用 6.1、 服务降级 6.2、 集群容错 6.3、 整合hystrix 7、dubbo原理

qq_44300280的博客 3199
上一篇: HTTP
下一篇: Socket Java I/O Socket I/O
iQuester
博客等级 码龄11年 22粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值