mina

Apache MINA --- [ProtocolCodecFilter]

混江龙づ霸主 提交于 2021-02-13 16:25:57
为什么使用它: TCP协议保证所有的包有正确的顺序,但是不保证发送端的一个写操作只导致接收端的一个读事件发生,用 MINA术语来描述 就是:没有ProtocolCodecFilter,发送端一个IoSession.write(...)能够导致接收端多个 messageReceived(...),多个write(...)也能被引导到一个messageReceived(...),也许在单机测试时我们 不会碰到这样的情况,但是我们的应用应该有能力处理这种问题. 大多数网络应用需要一种方式来找到当前信息的结束点和下一条信息的开始点. 我们能够在IoHandler中实现所有业务逻辑,但是添加ProtocolCodecFilter将使你的代码更加容易,清晰的维护. 它能帮助我们分离业务逻辑和协议逻辑. 怎么使用: 应用基本上仅仅接收字节流而且我们需要将它们转化成高层对象(message). 这里有三种通用技术来分割字节流到message: 1.使用固定长度的信息. 2.使用固定长度的消息头来指定的消息体的长度. 3.使用定界符(如:许多基于文本的协议会在每条消息末尾加上换行符). 例子: 本例中,我们将开发一个无用的图形字符服务来阐明如何实现自己的协议编解码器 Request: //一个简单的POJO代表一个请求 public class ImageRequest { private int

Mina使用IoHandler实现业务处理

六月ゝ 毕业季﹏ 提交于 2021-01-20 02:46:09
IoHandler 是 Mina 实现其业务逻辑的顶级接口;在 IoHandler 中定义了 7 个方法,根据 I/O 事件来触发对应的方法: import java.io.IOException; public interface IoHandler { void sessionCreated(IoSession session) throws Exception; void sessionOpened(IoSession session) throws Exception; void sessionClosed(IoSession session) throws Exception; void sessionIdle(IoSession session, IdleStatus status) throws Exception; void exceptionCaught(IoSession session, Throwable cause) throws Exception; void messageReceived(IoSession session, Object message) throws Exception; void messageSent(IoSession session, Object message) throws Exception; }

Dubbo系列-扬帆起航

好久不见. 提交于 2020-12-04 20:44:55
前言 接下来一段时间敖丙将带大家开启紧张刺激的 Dubbo 之旅!是的要开始写 Dubbo 系列的文章了,之前我已经写过一篇架构演进的文章,也说明了微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。 这篇文章敖丙先带着大家来 总览全局 ,一般而言熟悉一个框架你要先知道这玩意是做什么的,能解决什么痛点,核心的模块是什么,大致运转流程是怎样的。 你要一来就扎入细节之中无法自拔,一波 DFS 直接被劝退的可能性高达99.99%,所以本暖男敖丙将带大家先过一遍 Dubbo 的简介、总体分层、核心组件以及大致调用流程 。 不仅如此我还会带着大家过一遍如果要让你 设计一个 RPC 框架你看看都需要什么功能 ?这波操作之后你会发现嘿嘿 Dubbo 怎么设计的和我想的一样呢?真是英雄所见略同啊! 而且我还会写一个简单版 RPC 框架实现,让大家明白 RPC 到底是如何工作的。 如果看了这篇文章你要还是不知道 Dubbo 是啥,我可以要劝退了。 我们先来谈一谈什么叫 RPC ,我发现有很多同学不太了解这个概念,还有人把 RPC 和 HTTP 来进行对比。所以咱们先来说说什么是 RPC。 什么是 RPC RPC,Remote Procedure Call 即远程过程调用

HttpServer核心原理与架构

社会主义新天地 提交于 2020-10-31 06:30:53
1)Req和Res 2)百度服务器启动一个:HttpServer,本质是一个TcpServer,只不过数据通讯采用http来做数据通讯。 (1)服务器开启一个监听在某个端口(80端口,443端口)等着客户端进行连接; (2)http url的地址:http://news.baidu.com/guonei 站点:http://news.baidu.com--》DNS解析域名得到IP地址,端口默认是:80 URL: /guonei, 你不同的地址,发给服务器,服务器就根据这个地址,来找对应的处理方法。 (3):httpserver就可以根据这个URL--》对应的处理函数 (4)处理完请求后--》socket返回数据给客户端。 3)因此开发HttpServer就变成了开启一个TCPSocketServer: 注册不通的处理响应函数: /guonei-->处理响应函数/对象 /guoji-->处理函数 4)总体流程: httpserver-->http请求--》url--》根据url--》处理函数、对象--》处理结果--》httpServer Socket--》客户端 5)如何启动一个Mina写的HttpServer (1)创建一个机遇TCP的NIO的Acceptor。 (2)setHandler(new HttpServerHandle()); 所有消息都会进来。 6

puma(5300✨) Rails的一个多线程,高并发处理的web server

僤鯓⒐⒋嵵緔 提交于 2020-10-28 10:36:36
https://github.com/puma/puma 在开发和产品环境下,Puma是一个简单,快速,多线程,并高并发highly concurrent HTTP1.1server for Ruby/Rack程序。 什么是多线程? multithreading 指从软件或者硬件上实现多个线程并发执行的技术。从而整体提升处理效能。 软件多线程:即使处理器只能运行一个线程,但操作系统可以通过快速在不同线程之间进行切换,由于间隔时间很小,给用户造成一种多个线程同时运行的假象。这样的程序运行机制被称为软件多线程。 多任务可以由多进程完成,也可以由一个进程内的多线程完成。 进程是由若干线程组成的,一个进程至少有一个线程。 单进程单线程:一个人在一个桌子上吃菜; 单进程多线程:多个人在一个桌子上吃菜;容易发生争抢,即资源共享就会发生冲突争抢。 多进程单线程:多个人在各自的桌子上吃菜; gem 'puma', '~> 3.11' gem 'mina-puma', '~> 1.1.0', require: false ⚠️require: false的选项是什么用途? 答案: 具体见:stackoverflow 把这个gem安装了,但不加载load。 你bundler时,不会调用require 'mina-puma'命令。什么时候需要用到这个library,手动加载这个命令。

说一下 Dubbo 的工作原理?

戏子无情 提交于 2020-10-05 13:53:37
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ、ES、Redis、Dubbo,上来先问你一些 思考性的问题 、 原理 ,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架等等。 那既然开始聊分布式系统了,自然重点先聊聊 dubbo 了,毕竟 dubbo 是目前事实上大部分公司的分布式系统的 rpc 框架标准,基于 dubbo 也可以构建一整套的微服务架构。但是需要自己大量开发。 当然去年开始 spring cloud 非常火,现在大量的公司开始转向 spring cloud 了,spring cloud 人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用 dubbo,所以 dubbo 肯定会是目前面试的重点,何况人家 dubbo 现在重启开源社区维护了,捐献给了 apache,未来应该也还是有一定市场和地位的。 既然聊 dubbo,那肯定是先从 dubbo 原理开始聊了,你先说说 dubbo 支撑 rpc 分布式调用的架构啥的,然后说说一次

微信小程序

北城以北 提交于 2020-10-03 09:53:42
小程序本质就是一个单页面应用,所有的页面渲染和事件处理,都在一个页面内进行,但又可以通过微信客户端调用原生的各种接口; 它的架构,是数据驱动的架构模式,它的UI和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现; 它从技术讲和现有的前端开发差不多,采用JavaScript、WXML、WXSS三种技术进行开发; 功能可分为webview和appService两个部分; webview用来展现UI,appService有来处理业务逻辑、数据及接口调用; 两个部分在两个进程中运行,通过系统层JSBridge实现通信,实现UI的渲染、事件的处理等。 小程序 MINA 架构 (通过下图更好理解) 来源: oschina 链接: https://my.oschina.net/u/4272821/blog/4524225

朋友国企干了5年java,居然不知道Dubbo是做什么呢?我真信了

流过昼夜 提交于 2020-08-19 17:24:16
点赞再看,养成习惯,微信搜一搜【 三太子敖丙 】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 前言 接下来一段时间敖丙将带大家开启紧张刺激的 Dubbo 之旅!是的要开始写 Dubbo 系列的文章了,之前我已经写过一篇架构演进的文章,也说明了微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。 这篇文章敖丙先带着大家来 总览全局 ,一般而言熟悉一个框架你要先知道这玩意是做什么的,能解决什么痛点,核心的模块是什么,大致运转流程是怎样的。 你要一来就扎入细节之中无法自拔,一波 DFS 直接被劝退的可能性高达99.99%,所以本暖男敖丙将带大家先过一遍 Dubbo 的简介、总体分层、核心组件以及大致调用流程 。 不仅如此我还会带着大家过一遍如果要让你 设计一个 RPC 框架你看看都需要什么功能 ?这波操作之后你会发现嘿嘿 Dubbo 怎么设计的和我想的一样呢?真是英雄所见略同啊! 而且我还会写一个简单版 RPC 框架实现,让大家明白 RPC 到底是如何工作的。 如果看了这篇文章你要还是不知道 Dubbo 是啥,我可以要劝退了。 我们先来谈一谈什么叫 RPC

朋友国企干了5年java,居然不知道Dubbo是做什么呢?我真信了

你。 提交于 2020-08-19 16:11:44
点赞再看,养成习惯,微信搜一搜【 三太子敖丙 】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 前言 接下来一段时间敖丙将带大家开启紧张刺激的 Dubbo 之旅!是的要开始写 Dubbo 系列的文章了,之前我已经写过一篇架构演进的文章,也说明了微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。 这篇文章敖丙先带着大家来 总览全局 ,一般而言熟悉一个框架你要先知道这玩意是做什么的,能解决什么痛点,核心的模块是什么,大致运转流程是怎样的。 你要一来就扎入细节之中无法自拔,一波 DFS 直接被劝退的可能性高达99.99%,所以本暖男敖丙将带大家先过一遍 Dubbo 的简介、总体分层、核心组件以及大致调用流程 。 不仅如此我还会带着大家过一遍如果要让你 设计一个 RPC 框架你看看都需要什么功能 ?这波操作之后你会发现嘿嘿 Dubbo 怎么设计的和我想的一样呢?真是英雄所见略同啊! 而且我还会写一个简单版 RPC 框架实现,让大家明白 RPC 到底是如何工作的。 如果看了这篇文章你要还是不知道 Dubbo 是啥,我可以要劝退了。 我们先来谈一谈什么叫 RPC

朋友国企干了5年java,居然不知道Dubbo是做什么呢?我真信了

て烟熏妆下的殇ゞ 提交于 2020-08-19 16:10:48
点赞再看,养成习惯,微信搜一搜【 三太子敖丙 】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 前言 接下来一段时间敖丙将带大家开启紧张刺激的 Dubbo 之旅!是的要开始写 Dubbo 系列的文章了,之前我已经写过一篇架构演进的文章,也说明了微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。 这篇文章敖丙先带着大家来 总览全局 ,一般而言熟悉一个框架你要先知道这玩意是做什么的,能解决什么痛点,核心的模块是什么,大致运转流程是怎样的。 你要一来就扎入细节之中无法自拔,一波 DFS 直接被劝退的可能性高达99.99%,所以本暖男敖丙将带大家先过一遍 Dubbo 的简介、总体分层、核心组件以及大致调用流程 。 不仅如此我还会带着大家过一遍如果要让你 设计一个 RPC 框架你看看都需要什么功能 ?这波操作之后你会发现嘿嘿 Dubbo 怎么设计的和我想的一样呢?真是英雄所见略同啊! 而且我还会写一个简单版 RPC 框架实现,让大家明白 RPC 到底是如何工作的。 如果看了这篇文章你要还是不知道 Dubbo 是啥,我可以要劝退了。 我们先来谈一谈什么叫 RPC