喜欢 thinkphp 的同学肯定都是 php 死忠,但是我们最为后端程序员,常常因为“世界上最好的语言”而惨遭其他语言的鄙视,实际真的是他们不懂爱。我们给予还击的最好的方式就是了解掌握他们的那些技术,让他们闭嘴。
正好本 phper 这一年因为公司业务的变更为 java,算是 java 新手吧,但是总算和 java 那些傲慢者们哔哔的时候能拿出我 php 的优势压制他们了。
言归正传:
Yar Java Client 简介
Yar 是一个轻量级, 高效的 RPC 框架, 它提供了一种简单方法来让 PHP 项目之间可以互相远程调用对方的本地方法. 并且 Yar 也提供了并行调用的能力. 可以支持同时调用多个远程服务的方法. Yar 作者是@laruence
Yar Java Client 则实现了跨语言的远程调用。使得 Java 客户端能够调用 Yar PHP 服务器端本地的方法。
Yar Java Client 的产生
我在开发的时候遇到了如下的需求,而且频繁更新的
1.当用户的 feed 收到点赞时:收到1个赞时,发放10金币;收到5个赞时,发放10金币;收到10个赞时,发放10金币;从10~50个赞每多10个赞,发放10金币;50个赞以后每多50个赞,发放10金币。
2.当用户评论时,每天的第一次评论送2金币,第二次评论送5金币;
3.当用户添加 feed 时,每天的第一次添加图片 feed 送5金币,添加视频 feed 送10金币;
4.当用户 feed 被系统推荐时,送20金币。
如果将这一些运营业务都写在 api 里面,是不是显得很乱呢?一方面导致代码越堆越多,逻辑越来越乱;另一方面,每一次的改动都会涉及 api 的频繁上线,提心吊胆。
我们可以明显的可以看出,这一套运营部门激励用户的需求都是和金币直接相关的,应该解耦出来单独成为了一个金币服务。
所以我想到这应该使用 RPC 来解决这个问题,而大多数的 PRC 都过于健壮,而我这里只不过是想把一些频繁更新的业务逻辑解耦出来,最后选择的 Yar,因为它非常轻量级,而且后端使用 PHP 来写,非常适合这种频繁调整而又可以异步的场景。所以萌生了写一个 Yar java client 的想法。如果你的项目也遇到了同样的问题,也可以考虑这个思路。
有兴趣的朋友可以看看完整的使用说明 https://github.com/zhoumengkang/yar-java-client/wiki/Manual
最佳答案