Comments (32)
嗯,携手你我他,推广靠大家
from hprose-java.
如果能够做一些基准测试就好了
from hprose-java.
@kris-zhang 欢迎提交测试代码
from hprose-java.
咱这个有什么优势么?或者给一个vs对比啥的
from hprose-java.
跨语言,常用语言支持的最多。动态 RPC,无需中间语言。类型自动转换,接口定义成什么类型,就自动转换成什么类型,而且是直接反序列化为接口指定的类型(所以没有二次转换的开销)。不仅仅是 RPC,还支持订阅推送服务。性能比 thrift、grpc 之类的静态 RPC 还要快,而且是快很多。松散耦合,服务本身跟 hprose 没有任何绑定关系,也就是说你的服务代码里不需要引入任何 org.hprose 的包,所以你的服务代码在没有 hprose 的环境下仍然可以被复用。易用性也是所有 RPC 中最好的,即使不看文档也能秒懂怎么用。
from hprose-java.
"性能比 thrift、grpc 之类的静态 RPC 还要快,而且是快很多"
这样说口说无凭 甚至有点让人反感,还是给出个对比比较好,如性能、流量等
from hprose-java.
就算我给出对比,你也会说老王卖瓜,自卖自夸。所以,不如你自己测试一下,你自己跑的数据应该最能让你心服口服。
from hprose-java.
@andot 不要误会,我就是给个建议。毕竟用数据说话更有说服力
from hprose-java.
@xclouder 我的意思是,我自己评测的数据同样没有说服力,评测数据由第三方给出才有说服力,所以,评测的事情还要是靠你们大家了。
from hprose-java.
@andot 推送服务都可以应用到哪些方面 ,和MQ的差别 比如一些消息中间件
from hprose-java.
MQ是个数据中转站,生产者的客户端往 MQ 里填数据,消费者的客户端从 MQ 里取数据。当然取数据这个过程可以通过订阅的方式来实现,之后 MQ 会把生产者发送给 MQ 的数据推送给消费者。
所以对于 MQ 的推送来说,是三方通讯:生产者 -> MQ -> 消费者。
Hprose 的推送是直接在服务器端的服务方法中,推送数据给客户端,属于两方通讯。所以,可以在这个基础上,直接通过 Hprose 服务来实现一个 MQ。
from hprose-java.
跨语言、轻量、简单易用确实不错,而且性能也不差!
如果能加入“服务发现/治理、高可用”这样就更好了!dubbo的服务治理+Thrift的性能就完美了!
from hprose-java.
2.0 已经支持高可用了。服务发现/治理后面会单独做几个项目:hprose-registry,hprose-agent,hprose-manager,来实现松耦合跨语言的服务发现/治理。
from hprose-java.
服务治理打算怎么做,用consul、zookeeper吗?类似于微博的motan那样。
from hprose-java.
我打算用 hprose 2.0 for golang 来做,服务注册和发现服务本身就是一个 hprose 服务,这样所有的 hprose 客户端就都可以直接使用了。
from hprose-java.
稳定性怎么样呢?
from hprose-java.
@lichangmao 稳定性可以,我们项目面对千万用户已经在用了
from hprose-java.
@andot 服务治理/服务发现 如果能出 java版的就nice了!强烈建议!
from hprose-java.
@wty007 hprose-registry 本身就是一个 hprose 服务,是一个独立的可执行程序,配置好参数就运行了,所以它是跨语言的,不需要编程,跟用什么语言实现没关系。使用 golang 实现是因为部署时不需要任何依赖,而使用 Java 实现的话,用户使用时,至少需要安装 Java 运行时,这对于不需要 Java 的用户来说,不方便。
from hprose-java.
我想问下,如果我想设置调用方法参数必填和不必填,能不能通过@annotation的形式来做,还是必须得在服务端自己重新写处理逻辑
from hprose-java.
@LanayaTA Java 支持不同个数参数重载的方法,你可以通过重载来实现必填和不必填的同名方法重载。例如:
class Hello {
String hello(String name) {
return "Hello " + name + "!";
}
String hello() {
return hello("World");
}
}
例如你发布了这个方法,客户端不带参数调用时,返回 "Hello World!",带参数时返回 "Hello " + 你的参数 + "!"。
也就是你本地怎么用,远程就怎么用(不过不支持参数个数相同的同名方法重载)。
@annotation 方式的可选参数我没见过,java 支持这种方式吗?
from hprose-java.
@andot 其实我想问的是,关于调用函数参数的预处理那些,就是判断非不非空,长度,什么的,这些基础校验机制
from hprose-java.
@LanayaTA 这些功能没有自带,但是可以通过自定义 Hprose 中间件来实现。自己写一个可以处理这个的 Hprose 调用中间件就可以了。
不内置对服务方法使用各种 annotation 的原因是,这会造成服务和 hprose 紧耦合的关系,而 hprose 是希望服务本身独立于 hprose,在没有 hprose 的情况下仍然可以复用。所以 hprose 不自带这种功能,但是 hprose 提供的调用中间件可以实现各种特殊功能的定制,也包括这个。
使用这种自己定制的方式,你可以让你定制的功能跟你的服务紧耦合,但是跟 hprose 之间不存在紧耦合关系,所以你定制的这些 annotation 和你的服务仍然可以在脱离 hprose 的情况下复用。
关于中间件的使用方式,可以参见文档:调用中间件
其中参数 context,可以转型为 ServiceContext 类型,通过该类型,你可以获取到调用的实际方法,之后获取上面定义的各种 annotation,然后你就可以进行统一的处理了。
from hprose-java.
请问怎么传输文件?
from hprose-java.
@recyclebinA126 传 byte[]
from hprose-java.
请问一下这么多语言版本都是你一个人写的么
from hprose-java.
不好意思请问一下,传输数据量能多少K
from hprose-java.
大部分是我写的,也有一些版本是其他开发者写的,比如C++、Rust 等版本是 @laoye 写的。
传输的数据量理论上最大是 2GB,实际上可能要小于这个数。
from hprose-java.
请问Delphi版什么时候可以支持TCP?
from hprose-java.
TCP 客户端实现比较麻烦,所以暂时没时间来做。
from hprose-java.
@andot 看了一下hprose-registry,hprose-agent,hprose-manager里面还是空空如也,这三个东西出来之后应该会有更多人使用,没有这些,服务不好管,特别对于我这样的小白
from hprose-java.
@bullub 欢迎提交代码到那三个仓库中。
from hprose-java.
Related Issues (20)
- hprose.io.unserialize.Reader.unserialize占用CPU奇高 HOT 2
- 环境差异导致不能连接到服务器,如何排查 HOT 1
- 查询单个对象的时候 可以 但是 查询 对象集合的时候 就不行了 List<A> HOT 5
- hprose-java/wiki HOT 2
- hprose-java不支持maven依赖吗?没有maven支持版本? HOT 2
- 跨域问题
- 服务器使用PHP语言开发的,然后我用Java语言请求,明明有响应数据,但是一直抛异常 HOT 2
- JSON format support? HOT 2
- How to unserialize golang map[string]interface{} to java side? HOT 1
- 在安卓手机上,订阅有数量限制么? HOT 2
- Android客户端使用订阅,服务器端重启的情况,客户端无法自动重连服务器 HOT 1
- An illegal reflective access operation has occurred HOT 1
- idea中测试hprose tomcat 关闭时 hprose报错误信息 HOT 1
- 关于内存溢出的疑问 HOT 6
- 请问什么时候支持Hprose 3.0? HOT 5
- get 乱码 HOT 8
- ByteBufferStream 堆外内存申请问题 HOT 1
- 2.0的客户端,能否订阅go写的3.0的推送服务? HOT 2
- 关于HproseServlet发布的地址,通过浏览器打开会变成下载
- Hprose-java推送服务功能出现堵塞,直至服务端超时 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hprose-java.