wfuren
wfuren
@stelin meiren ma
@inhere 类似我在服务中,调用另一个服务
> 自己扩展就好了,本来就支持定制 ..........自己已经扩展过了。但问题不是官方库的啊。而且这东西也按理来说官方自己就支持会更好不是吗。
RPC这方面本来就是,各种不同语言的微服务互相工作,java或者golang有的就是用的键对值的形式。而且你在编写服务消费者的时候,默认必须遵从对方函数的顺序。用键对值的情况下,只需要用相同的参数就行。这样不是更好吗。
3.0会支持???目前2.2里我没有看到支持关联名称的方式啊
> > 3.0会支持???目前2.2里我没有看到支持关联名称的方式啊 > > 我说的是 jsonrpc 这个协议,不是 hyperf 框架版本 jsonrpc的协议就是数组加对象两种啊。我想说的就是把这两种方式都加上。
可能我没表达清楚,我是觉得在配置中可自行配置使用那种方式。这样可以更好的兼容不同服务。 类似这样: 我自己目前的扩展放在了服务消费中options里。 path_prefix(2.2官方有支持,但不全面,发现在通过registry来获取服务的时候无法支持,所以自己改了一下) method_rule(主要用来自定义请求中”method“的形式。目前支持className,method,serverName) params_type(这个就是此次issues中提到的,支持对象和数组的形式) > 图中的”custom“已经不在使用。请忽略。
> 那可能是设计理念不太一样吧,官方是偏向替换 Transporter 的方式,这个需要作者才能更好的表述。 遵循前沿技术和规范固然是好。可不同语言之间对协议的处理方式可能会有差异。个人觉得这种可兼容的东西和可以让程序更灵活化的方式更好点把。必进在不影响整体设计上加入更灵活的配置。不是更好吗。也可以更好容纳新人的使用。
复现代码。 共享锁难道不应该是,在进行操作时,其他共享锁会被抛弃吗。但为什么会出现死锁的问题。
> 共享锁:我可以`读` `写` `加锁` , 别人可以 `读` `加锁` 。 预期是应该这样。A和B,同时读取用户资源且修改。结果应该是A和B都读取到资源,但其中一个会被抛弃。被抛弃的那个因已经到save或者commit步提交步骤,但数据已被锁所以直接会抛出异常,所以A或B有一个应该是抛出异常。 目前情况是:与预期不符,会出现死锁的情况。并发并不高才10。 复现代码: > Db::beginTransaction(); try { $cycle = AwardCycle::where('user_unid', 'aa2b90c6-de3e-11eb-b81e-0242ac110002')->sharedLock()->first(); try { Db::beginTransaction(); /* 首先操作钱包做增减 */ $user = UserWallet::where('user_unid', $cycle['user_unid'])->first();...