科技新闻

Dubbo基本原理机制

被刻印的时光 ゝ 提交于 2020-03-11 05:26:57
分布式服务框架: –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 -Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接 Dubbo缺省协议采用单一长连接和NIO异步通讯, 适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 分析源代码,基本原理如下: client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object) 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传

alibaba远程调用框架dubbo原理

隐身守侯 提交于 2020-03-11 04:32:51
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题。 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系统的一个服务,我们可能会使用RMI直接来进行,B系统发布一个RMI接口服务,然后A 系统就来通过RMI调用这个接口,为了解决容灾,扩展,负载均衡的问题,我们可能会想很多办法,alibaba的这个办法感觉不错。 本文只说dubbo,原理如下: ConfigServer 配置中心,和每个Server/Client之间会作一个实时的心跳检测(因为它们都是建立的Socket长连接),比如几秒钟检测一次。收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务列表,如: serviceName serverAddressList clientAddressList UserService 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4 172.16.0.1,172.16.0.2 ProductService 192.168.0.3

alibaba远程调用框架dubbo原理

女生的网名这么多〃 提交于 2020-03-11 04:32:33
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。 这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题。 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系统的一个服务,我们可能会使用RMI直接来进行,B系统发布一个RMI接口服务,然后A系统就来通过RMI调用这个接口,为了解决容灾,扩展,负载均衡的问题,我们可能会想很多办法,alibaba的这个办法感觉不错。 本文只说dubbo, 原理如下: ConfigServer 配置中心, 和每个Server/Client之间会作一个实时的心跳检测( 因为它们都是 建立的Socket长连接 ) ,比如几秒钟检测一次。 收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务列表,如: serviceName serverAddressList clientAddressList UserService 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4 172.16.0.1,172.16.0.2 ProductService 192

滴滴快的正式宣布合并:业务平行发展

a 夏天 提交于 2020-03-11 03:58:43
  网易科技讯 2月14日消息,滴滴与快的今天宣布两家实现战略合并。滴滴打车CEO程维及快的打车CEO吕传伟同时担任联合CEO。两家公司在人员架构上保持不变,业务继续平行发展,并将保留各自的品牌和业务独立性。   滴滴快的都认为,专车领域面临着各种新的变化及更多新的力量,在包括代驾、拼车、公交、地铁等更广泛的移动出行领域,双方均面临着各种挑战与风险。作为行业的先行者,更需聚集移动互联网精英人才,独立地顺应市场与用户需求来发展。同时,移动出行不仅深刻地改变了中国人的出行方式与习惯,更在许多方面对中国传统的交通出行领域提出了新的话题。面对如此富有挑战与机遇的时代,双方公司管理层经过反复沟通与交流,最终达成共识,决定两家公司进行战略合并。   滴滴打车CEO程维表示,中国移动出行的快速发展仅仅不到3年时间,但它所呈现的社会价值,表现于通过移动出行平台来实现公用、个体的交通资源的复合性整合利用,这是移动互联网时代的共享经济特征,其不仅可以最大限度地节约能源,节约地面交通资源,并从根本上解决城市交通拥堵困境。更重要的是,通过移动出行平台,人们开始建立起人与人之间的信任关系,并在最广泛的意义上,实现社会信用体系的建立。(滴滴内部信:完成合并谈判只用了22天)   快的打车CEO吕传伟表示,移动出行在全球都是全新的领域,通过聚合人才,快速发展,不仅可以在中国完成大业,更有机会走向全球,如果说

正确认识区块链,拒绝做韭菜

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-11 03:12:47
  财迷们春节来这段时间,可能也不时在微信朋友圈里,看到有人发“加入3点钟无眠区块链学习成长群”的消息?   所以难怪,在近期的微信指数中,“区块链”不但力压“比特币”,甚至比“财富”还高,关注度爆棚!   微信指数截图   在“区块链”的不断刷屏中,大家都仿佛闻到了“暴富”的味道。   区块链真的可能成为你的印钞机吗?   首先我们要搞懂啥是区块链 what's the 区块链   有一件事实,我们不得不承认:区块链正在以极其迅猛的速度,渗透到我们生活中,而且,这只是刚刚开始...不单单是速度在加快,更为恐怖的是它的加速度在不断加快。近一年,世界各行各业的领先企业,不管是文娱圈、科技圈、还是最早嗅到先机的投资圈,都在加快渗透到区块链领域来,在A股萎靡的情况下,凡是和区块链相关的企业,哪怕单纯提出一个区块链的概念,这支股票就能独树一帜,股价及市值扶摇直上。   那么到底什么是区块链?很多小白,包含现有的韭菜,我们第一反应一定是去问度娘,度娘解释如下:   区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲

customErrors 元素(ASP.NET 设置架构)

↘锁芯ラ 提交于 2020-03-11 01:18:17
1、适用版本: .NET Framework 4 2、元素定义: 为 ASP.NET 应用程序提供有关自定义错误消息的信息。 可以在应用程序文件层次结构中的任意级别上定义 customErrors 元素。 <customErrors defaultRedirect="url"mode="On|Off|RemoteOnly"> <error. . ./> </customErrors> 3、 特性和元素 特性 说明 defaultRedirect 可选特性。 指定出错时将浏览器定向到的默认 URL。 如果未指定该特性,则显示一般性错误。 URL 可以是绝对的(如 www.contoso.com/ErrorPage.htm)或相对的。 相对 URL(如 /ErrorPage.htm)是相对于为该特性指定 URL 的 Web.config 文件,而不是相对于发生错误的网页。 以波形符 (~) 开头的 URL(如 ~/ErrorPage.htm)表示指定的 URL 是相对于应用程序的根路径 mode 必选特性。 指定是启用或禁用自定义错误,还是仅向远程客户端显示自定义错误。 此特性可以为下列值之一 On: 指定启用自定义错误。 如果未指定 defaultRedirect 特性,用户将看到一般性错误。 会向远程客户端和本地主机显示自定义错误。 Off: 指定禁用自定义错误。

企业即时通讯系统安全技术原理

醉酒当歌 提交于 2020-03-10 23:19:08
随着互联网的飞速发展,网络信息安全逐渐成为一个潜在的巨大问题,严重安全事故影响到企业的正常运营,因此需要在系统架构设计上多维度、立体保障信息安全。 主要需要解决服务器存储信息安全、移动端使用安全、客户端与服务器端之间的通讯安全这三个方面 1、服务器信息存储安全:消息记录存储涉及到公司机密信息,所有采用的系统首先就需要是能支持私有化部署的,其次每个会话的消息都应该独立加密存储,就算服务器被攻破,别人也无法破解加密的数据。 2、移动端信息安全:现在移动办公比较常见,所以对手机端的使用安全也需要特别注意,移动端的文件、图片、消息、组织架构,所有与信息安全相关的数据全部加密储存,就算用户手机丢失或被盗,别人也无法通过文件管理工具直接查看文件及数据,除此之外系统还应该具备数据抹除功能,手机在没有网络的情况下,支持需要输入安全密码才能进入APP,手机客户端本地不保存密码或密码hash,本地只保存login ticket,服务器可以控制login ticket有效期。通过管理后台可以设置客户端的登录二次验证,在验证用户名和密码通过的情况下,再通过短信验证码验证一次,才能确保万无一失。 3、网络通信安全:客户端与服务器网络通信全程加密,长连接采用TLS Socket,短连接采用HTTPS,符合国际标准的TLS1.2加密方式进行数据传输,密钥长度分别为:2048位RSA公私钥和256位AES对称密钥

消息中间件 二 之AMQP实战(下) RabbitMQ springboot实践

我的未来我决定 提交于 2020-03-10 23:15:29
实现内容 RabbitMQ + springboot 实现消息的发送和监听 springboot版本2.1.8 直接上代码 配置类 @Configuration public class RabbitConfig { // mq地址 @Bean(value = "connectionFactory") @Primary public ConnectionFactory connectionFactory( @Value("${spring.rabbitmq.host}") String host, @Value("${spring.rabbitmq.port}") int port, @Value("${spring.rabbitmq.username}") String username, @Value("${spring.rabbitmq.password}") String password, @Value("${spring.rabbitmq.virtual-host}") String virtualHost) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(host); connectionFactory

微服务-springcloud-bus-kafka

£可爱£侵袭症+ 提交于 2020-03-10 20:31:51
消息总线bus的作用:实现各个联通配置中心的微服务能够动态的批量的更新配置 服务端 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--<!–使用消息总线–>--> <dependency> <groupId

NFC高级

送分小仙女□ 提交于 2020-03-10 18:14:36
高级 NFC 本文档介绍了高级的NFC主题,如各种标签技术,NFC标签写入和前台发布,它允许即使当其他应用程序过滤器相同的时候,应用程序在前台处理Intent。 Tag技术支持工作 当使NFC Tag和Android的供电设备生效,使用Tag来读取和写入数据的主要格式是NDEF,当设备扫描NDEF数据的Tag,Android提供支持解析的消息,并在可能的情况下将它传入一个 NdefMessage ,但是,在有些情况下,当你扫描不包含NDEF数据的Tag或当NDEF数据时无法映射到MIME类型或URI时。在那样的情况下,你需要直接与Tag建立沟通及用自己的协议(在原始字节)读写它,Android用android.nfc.tech包对那些情况提供了通用的支持,如表1中所描述的。您可以使用getTechList()方法来确定技术支持Tag,并且用由android.nfc.tech提供的类的其中一个创建相应 TagTechnology 对象. 表 1. 支持的Tag技术 类 描述 TagTechnology 这个接口是下面所有 tag technology 类必须实现的。 NfcA 提供访问 NFC-A (ISO 14443-3A) 的属性和 I/O 操作 NfcB 提供访问 NFC-B (ISO 14443-3B) 的属性和 I/O 操作 NfcF 提供访问 NFC-F (JIS