rpc

[手把手教你] 用Swoft 搭建微服务(TCP RPC)

浪子不回头ぞ 提交于 2019-11-29 04:27:52
序言 Swoft Framework 基于 Swoole 原生协程的新时代 PHP 全栈式协程框架 Swoft 是什么? Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM 全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield,有类似 Go 语言的协程,灵活的注解 强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等 上面是官网描述, 感觉太官方, 我总结一下: 常驻内存 协程 学习曲线平滑 国内框架 开箱即用的RPC 如何搭建微服务? 首先确保已经可以正确搭建Swoft 不清楚的可以查看 Swoft 官方文档 鉴于每个人的开发环境都不同 这里选用官方 Docker 作为开发环境 Docker下载地址>>> 拉Docker 镜像 docker pull swoft / swoft 非常的简单 这样就是成功了 为了方便理解 我们把swoft 复制两份 命名为 swoft-rpc 和 swoft-http swoft-rpc 只开启 TCP 服务 swoft-http 只开启 Http 服务 修改配置文件 把根目录的 .env.example 复制一份为 .env .env

Swoole和Swoft的那些事 (Http/Rpc服务篇)

两盒软妹~` 提交于 2019-11-29 04:26:44
https://www.jianshu.com/p/4c0f625d5e11 Swoft在PHPer圈中是一个门槛较高的Web框架,不仅仅由于框架本身带来了很多新概念和前沿的设计,还在于Swoft是一个基于Swoole的框架。Swoole在PHPer圈内学习成本最高的工具没有之一,虽然Swoft的出现降低了Swoole的使用成本,但如果你对Swoole本身了解不够深入,仍然很难避免栽进种种 "坑" 中。 考虑到这个现状,也为降低阅读难度,后续几个和Swoole联系较为密切的机制,笔者会调整写作思路,将文章的定位从 「帮助读者深入理解Swoft」 调整为 「帮助读者理解Swoft和Swoole」 ,叙述节奏也会放慢。 三种PHP应用的Web模型 LNMP模型 LNMP和LAMP是绝大多数PHPer最熟悉的基础Web架构,这里以常见的LNMP作为例子描述一个常见 无Swoole应用的构件组成:Nginx充当Webservice,PHP-fpm维护一个进程池去运行Web项目。 对比更古老的cgi模型,php-fpm已经引入了进程常驻的概念,避免每次请求创建并销毁进程的开销以及拓展加载的开销,但是每个请求仍然要执行PHP RINIT 与 RSHUTDOWN 之间的所有流程,包括重新加载一次框架源码以及项目代码,造成极大的性能浪费。 这种模型的优点是简单成熟和稳定, 一次运行随后销毁

Registering a 32 bit DLL with 64 bit regsvr32

主宰稳场 提交于 2019-11-29 03:52:44
Considering the following Understanding A 32 bit Process cannot load a 64 bit dll or vice versa. For registering/unregistering a DLL regsvr32 calls the entry point DllRegisterServer / DllUnregisterServer after loading the target DLL into its address space through LoadLIbrary . On a 64 bit System, 32 bit version of regsvr32 is present in C:\Windows\SysWOW64 But then on my 2008 R2 Box, I was able to register a 32 bit dll by the 64 bit regsvr32. How was that possible? Am I missing something? This should explain how it happens exactly: http://alax.info/blog/wp-content/uploads/2009/11/01-Image002

Java RMI + SSL + Compression = IMPOSSIBLE!

99封情书 提交于 2019-11-29 02:10:39
I've setup RMI + SSL. This works great. But it doesn't seem possible to slip compression in between RMI and SSL. So that the RMI requests are compressed before they're sent over SSL. I've seen some posts online suggest using SSLSocketFactory.createSocket() which takes a Socket to wrap SSL over a compressing socket. But that seems like it would try to compress the SSL protocol itself, which probably isn't very compressable. I supposed I should create a Socket proxy (subclass of Socket that defers to another Socket , like FilterOutputStream does). Have the proxy wrap the Input/Ouput streams with

Dubbo入门---搭建一个最简单的Demo框架

别来无恙 提交于 2019-11-29 01:40:44
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数 394229 更多 分类专栏: Dubbo 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率。 缺点:但是在垂直架构中相同逻辑代码需要不断的复制,不能复用。 分布式应用架构(RPC) 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心 流动计算架构(SOA) 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系

RPC框架调用过程详解

ⅰ亾dé卋堺 提交于 2019-11-29 00:45:31
RPC框架调用过程详解 2017年09月16日 21:14:08 荷叶清泉 阅读数 6275 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/heyeqingquan/article/details/78006587 RPC是远程调用过程的简写,是一个协议,处于网络通信协议的第五层:会话层,其下就是TCP/IP协议,在建立在其基础上的通信会话协议。RPC定义了交互的模式,而应用程序使用这些模式,来访问其他服务器的方法,并不需要关系具体的网络上的细节。 一、RPC基础知识 1.RPC模式 RPC采用C/S模式,客户端发送请求,服务端响应。 基于底层的协议,比如TCP/IP模式。 2.设计目的 ①通过固定的协议,调用非本机的方法 ②实现不同程序语言之间的通信 ③不需要了解底层协议,像本地方法一样调。它完全封装了网络传输,以及其他细节。 二、RPC过程详解 图一 RPC调用过程 从RPC的角度看,应该有服务的提供方,即生产者;还有服务的调用方,即消费者。 对消费者来时,在RPC调用过程中,使用第1步、第2步、第3步、第4步是透明的,其他的都是使用RPC框架去封装这些事情。当应用开始调用PRC的方式时,就会去容器中去取Bean对象,所以我们应该首先注册Bean对象到容器中

RPC from Windows to linux

烈酒焚心 提交于 2019-11-28 23:19:52
Is there some (working) example how to create RPC from windows to linux? Client should be windows NT application, server is linux. It needs to be MSRPC . No Corba, no XML-RPC, SUN-RPC etc MSDN says this : RPC can be used in all client/server applications based on Windows operating systems. It can also be used to create client and server programs for heterogeneous network environments that include such operating systems as Unix and Apple. Unfortunately after spending few hours on google I'm giving up. My expectation: Linux node should have samba installed, because their MSRPC implementation

小白学习如何打日志

梦想的初衷 提交于 2019-11-28 23:11:29
一、Java打日志的基础 以前自己自学的时候,排查问题只会写下面的代码: try { // doSomething } catch (Exception e) { e.printStackTrace(); } ---------- // 查看某个数据的值时: System.out.println(xxxx); 去到公司就发现上面的代码全不见了,剩下的是: LOGGER.info("begin to run Java3y:{}", id); ---- LOGGER.error("excepiton occurs when run Java3y {}, exception{}", id, e.toString()); 如果使用 e.printStackTrace(); 的话,打印在控制的信息分析不方便: 而我们将信息分等级和时间记录在服务器的磁盘上,有问题了就可以根据对应的信息去查找相关的日志(这样排查起来是十分方便的): 我们再来看一下一般的日志长什么样的 例如:现在有人来反馈某某某用户好像收不到短信,给出发送时间和用户ID,我们就可以在日志上找出该用户在我们系统的发送状态(例如图上的:state:81,我们就认为是发送成功状态) 那么,问题来了,我们在哪打日志?《手册》上其实已经给出了答案: 谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志;如果使

如何给老婆解释什么是RPC

随声附和 提交于 2019-11-28 23:00:58
转至:https://www.jianshu.com/p/2accc2840a1b 一个阳光明媚的早晨,老婆又在翻看我订阅的技术杂志。 “老公,什么是RPC呀,为什么你们程序员那么多黑话!”,老婆还是一如既往的好奇。 “RPC,就是 Remote Procedure Call 的简称呀,翻译成中文就是 远程过程调用 嘛”,我一边看着书,一边漫不经心的回答着。 “啥?你在说啥?谁不知道翻译成中文是什么意思?你个废柴,快给我滚去洗碗!” “我去。。。”,我如梦初醒,我对面坐着的可不是一个程序员,为了不去洗碗,我瞬间调动起全部脑细胞,星辰大海在我脑中汇聚,灵感涌现...... "是这样,远程过程调用,自然是相对于本地过程调用来说的嘛。" “嗯哼,那先给老娘讲讲,本地过程调用是啥子?” “本地过程调用,就好比你现在在家里,你要想洗碗,那你直接把碗放进洗碗机,打开洗碗机开关就可以洗了。这就叫本地过程调用。” “哎呦,我可不干,那啥是远程过程调用?” “远程嘛,那就是你现在不在家,跟姐妹们浪去了,突然发现碗还没洗,打了个电话过来,叫我去洗碗,这就是远程过程调用啦”,多么通俗易懂的解释,我真是天才! “哦!我明白了”,说着,老婆开始收拾包包。 “你这是干啥去哦” “我?我要出门浪去呀,待会记得接收我的远程调用哦,哦不,咱们要专业点,应该说,待会记得接收我的RPC哦!” ......

Elements区块链RPC API文档【Liquid网络】

天大地大妈咪最大 提交于 2019-11-28 22:03:17
Elements侧链RPC API文档中文版由汇智网翻译整理,访问地址: http://cw.hubwiz.com/card/c/elements-rpc-api/ 。 Elements侧链包含很多与Bitcoin Core一样的RPC API。本文档仅描述Elements新增的全新的RPC API,相同的API请参考Bitcoin Core的文档。 在命令行可以通过 help 子命令获取Bitcoin Core或者Elements的RPC的帮助信息,例如: ~$ elements-cli help getblockchaininfo ~$ bitcoin-cli help getblockchaininfo 出块API combineblocksigs - 合并区块签名 getnewblockhex - 获取新区块 testproposedblock - 测试提议区块 裸交易API blindrawtransaction - 盲化裸交易 createrawtransaction - 创建裸交易 decoderawtransaction - 解码裸交易 rawblindrawtransaction - 原始盲化裸交易 sendrawtransaction - 发送裸交易 如果希望快速掌握区块链应用的开发,推荐汇智网的 区块链应用开发系列教程 , 内容涵盖比特币、以太坊、eos