GithubHelp home page GithubHelp logo

137-rick / dora-rpc Goto Github PK

View Code? Open in Web Editor NEW
467.0 467.0 101.0 249 KB

DoraRPC is an RPC For the PHP MicroService by The Swoole

PHP 98.70% Shell 1.30%
dora dora-rpc php rpc service-discovery swoole tcp

dora-rpc's People

Contributors

137-rick avatar hehexianshi avatar janhuang avatar kaleesi avatar ppanphper avatar shifengaway avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dora-rpc's Issues

swoole升级到2.0.6后报错跑步起来

Notice: Undefined property: APIServer::$server in /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php on line 249

Call Stack:
0.0059 235664 1. {main}() /mnt/winshare/test/myswoole/Dora-RPC-master/test/demoserver.php:0
0.0239 531832 2. DoraRPC\BackEndServer->start() /mnt/winshare/test/myswoole/Dora-RPC-master/test/demoserver.php:85
0.0244 540032 3. Swoole\Http\Server->start() /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php:208
14.5473 554160 4. DoraRPC\BackEndServer::onRequest(class Swoole\Http\Request, class Swoole\Http\Response) /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php:0

Fatal error: Call to a member function task() on null in /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php on line 249

Call Stack:
0.0059 235664 1. {main}() /mnt/winshare/test/myswoole/Dora-RPC-master/test/demoserver.php:0
0.0239 531832 2. DoraRPC\BackEndServer->start() /mnt/winshare/test/myswoole/Dora-RPC-master/test/demoserver.php:85
0.0244 540032 3. Swoole\Http\Server->start() /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php:208
14.5473 554160 4. DoraRPC\BackEndServer::onRequest(class Swoole\Http\Request, class Swoole\Http\Response) /mnt/winshare/test/myswoole/Dora-RPC-master/src/BackEndServer.php:0

希望兼容高版本的swoole。

Dora-RPC 0.2版本 求意见征集

未来计划增加
增加失败转移功能(中间件服务器?)
增加远程管理功能(应用服务器重启,reload等)
增加插件管理应用服务器功能

mac test 启动server报错

Found Report Config... Start Report Process
[2016-06-19 10:29:35 @1645.0] ERROR swSocket_set_buffer_size(:313): setsockopt(4, SOL_SOCKET, SO_SNDBUF, 0) failed. Error: Invalid argument[22].
[2016-06-19 10:29:35 @1645.0] ERROR swSocket_set_buffer_size(:313): setsockopt(5, SOL_SOCKET, SO_SNDBUF, 0) failed. Error: Invalid argument[22]

新的异步方式将会支持

在客户端程序启动的时候,下发一批要异步处理的任务,并获取到他们对应的token
当应用服务器获取到任务后执行完毕,将结果以token+ip+端口放到redis内

客户端在处理完所有事宜后,去redis用token拿到本次所有调用结果

建议增加命令行管理服务功能

比如:

php server.php start -d -h 127.0.0.1 -p 9567 -w 4 -r 20 -t 20
-d, --deamon 启用守护进程模式
-h, --host [<value>] 指定监听地址
-p, --port  [<value>] 指定监听端口
--help 显示帮助界面
-w, --worker  [<value>] 设置Worker进程的数量
-r, --thread [<value>]  设Reactor进程的数量
-t, --takser [<value>]  设置Task进程的数量

php server.php reload 重新加载
php server.php stop 停止服务

同时建议master进程名中显示启动参数

数据安全问题

包头将会做改进,留在这里做记录
将会对包信息配置指定是否签名验证

关于rpc的一个疑问

如果rpc是阻塞的,那么在等待rpc返回的这段时间里php进程就没有别的事可做就进程饥饿,就很难支持大qps了。。。就算使用的异步的httpclient如果有一个wait的过程那还是有进程饥饿,dora用的是swoole1。x版本吧,这个问题是如果解决的呢?

发现一个Bug

BackEndServer.php line:350 括号闭合的位置错了:count($requestInfo["api"] == 0)
if (!is_array($requestInfo["api"]) && count($requestInfo["api"] == 0)) {
...

客户端发送请求时,如果发送失败,应该切换连接通道

目前只是unset当前连接,然后重试,随机一个服务器(有几率还是这个连接),因此建议把当前连接设置进黑名单。
至于黑名单满了,会被重新清空,所以不需要担心无连接可取的问题。

还有个小问题,随机取config可能会重复好几次(运气不好的话)

客户端共用同一个swoole_client的冲突问题

如果在同一个程序中创建两个客户端,分别连接不同的服务器,比如:

第一个客户端连接 127.0.0.1:3000, 第二个客户端连接 127.0.0.1:3001,因为共用同一个 swoole_client,会造成冲突,无法使用。

提几点建议

代码写的很工整,注释也比较清楚,赞一个!这里提几点建议,仅供参考~
1、虽然很容易看懂,也有例子,但最好再详细介绍一下,比如协议设定,使用方法。
2、服务端需要在初始化的时候载入类库,例子中没有说明。
3、最好采用配置文件的方式,而不是每次去修改类。
4、服务端可以引入控制层,可以启动服务,也可以关闭服务,便于管理。
5、从抽象的角度,应该可以适配更多的协议。
6、可以参考psr-4规范,引入命名空间,自动载入。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.