返回首页
最新
简要概述:构建了一个RPC框架,采用多种方法解决现有的RPC问题。现提供文档预览,寻求反馈以便最终定稿。
<p>在看到关于RPC的相同抱怨反复出现多年后,我花了一年时间构建了一个新的RPC框架,AtomicLinkRPC(ALR)。
<p>同一篇文章每隔几年就会引发热烈讨论:
https://reasonablypolymorphic.com/blog/protos-are-wrong/
<p>以及基于该文章的讨论:
https://news.ycombinator.com/item?id=21871514
https://news.ycombinator.com/item?id=35281561
https://news.ycombinator.com/item?id=45139656
<p>我已实现了一个具体的端到端解决方案,并发布了文档预览(C++优先):
https://atomiclinkrpc.github.io/alr-preview/
<p>简要示例:
<p>// service.h
class Greeter : public alr::EndpointClass
{
public:
static std::string sayHello(const std::string& name);
};
<p>// service.cpp
std::string Greeter::sayHello(const std::string& name)
{
return "Hello " + name;
}
<p>int main()
{
return alr::ConnectionInfo()
.setListenAddress("0.0.0.0:55100")
.listen();
}
<p>// client.cpp
#include "alr/endpoint.h"
#include "client_gen.h"
<p>int main()
{
alr::Endpoint ep = alr::ConnectionInfo()
.setConnectAddress("service-host:55100")
.connect();
auto result = Greeter::sayHello("World"); // 实际上是RPC
printf("%s\n", result.c_str());
return 0;
}
<p>以下是上述讨论中提出的一些问题的简要列表,以及ALR如何解决每个问题的简要描述。我非常希望听到您对这些方法的批评意见,您认为它们可能出现的问题,以及缺失的部分(但请查看文档链接以获取更深入的细节)。
<p>1) 阻抗不匹配:应用代码为了适应传输而扭曲
- 在ALR中,“消息”和其他RPC特定概念成为低级实现细节,永远不会出现在您的业务逻辑中。可远程调用的类、方法和结构保持干净,不受RPC噪音影响,并与您的业务逻辑1:1映射。无需再编写用户自定义的事件循环/反应器来使RPC工作。也不再需要生成以RPC为中心的数据传输对象(DTO)及其getter和setter。
- ALR使用环境变量系统(请参见文档),这是一组线程局部变量,提供执行RPC所需的所有上下文,而无需在业务逻辑中拖拽上下文变量。只有您自己的干净类、干净函数、干净结构和原生类型。没有噪音。
<p>2) API演变在现实中是破碎的、脆弱的、不一致的或难以使用和维护
- ALR直接使用您的类、方法和结构作为模式,没有脆弱的标签。
- ALR在握手时协商模式和访问者布局映射,并创建交集映射以允许不同版本之间的互操作。
<p>3) 理解和实现RPC框架的学习曲线陡峭
- 除了从ALR基类派生您的可远程调用类外,没有太多新的API需要学习。
- 请查看文档预览链接中的示例,以感受与其他框架相比使用的简便性。
<p>4) 性能
- 基准测试结果显示,ALR的性能显著优于gRPC,具体结果请见文档。我很乐意讨论这些结果为何可能。
<p>针对HN的问题
1. 您认为ALR解决这些问题的方法有哪些缺陷?
2. 如果您有动态远程能力检查失败的反例,我想听听。
3. 我遗漏了哪些RPC痛点,ALR没有解决?
4. 这里或文档中是否有需要更多细节的特定领域?
<p>状态与范围
- 这是一个仅限文档的预览。我在冻结接口之前寻求对立的反馈。
- 源代码尚未公开,正在最终确定开源许可证。
- C++是首个支持的语言,计划支持Python、Rust等其他语言。
<p>感谢您抽出时间查看 - 欢迎直接反馈!
嗨,HN,我是Tina。
和你们中的许多人一样,我对大型语言模型(LLM)的幻觉感到沮丧——这些输出听起来非常自信,但实际上是虚构的。因此,我创建了CompareGPT.io,这是一个工具,可以:
- 在多个LLM(如ChatGPT、Gemini、Claude、Grok等)上运行相同的查询
- 并排显示结果,以便更容易发现差异(和幻觉)
- 提供统一的API,便于集成
我们刚刚开放了候补名单(并提供半价的早鸟优惠和终身计划赠送)。
我很想听听这个社区的反馈:你们认为多模型一致性是否可以成为减少法律、金融或研究领域幻觉的标准方法?
谢谢!
如果宝可梦实际上是聪明的呢?
大家好,我是拉蒙——这正是我的工作室正在研发的内容!我们正在制作《阿利昂:战斗之声》,这是一款怪物训练师游戏,游戏中的生物栩栩如生,能够独立思考和行动,就像直接从动漫中走出来的一样!
与众不同之处:
• 准备:通过语音和示范训练你的怪物,创造出在战斗中使用的致命技能。
• 即兴发挥:物理驱动的竞技场会随着战斗而变化——将火焰化为蒸汽,制造坑洞,重塑掩体。
• 亲密关系:阿利昂能够理解自然语言,拥有个性和记忆,你们的关系会随着时间的推移而加深。在战斗间隙,你可以和它们一起放松、聊天和玩耍。
如果这听起来符合你的兴趣:
Steam愿望单(非常有帮助):[https://store.steampowered.com/app/3987700/Allyon_Battlecry/](https://store.steampowered.com/app/3987700/Allyon_Battlecry/)
加入Discord以参与游戏测试和反馈:[https://tinyurl.com/allyonbattlecry](https://tinyurl.com/allyonbattlecry)
谢谢,我期待听到你的想法!
代理网页服务来自网址 (<a href="https://web.818233.xyz" rel="nofollow">https://web.818233.xyz</a>) —— 一项免费的网页代理服务,直接通过网址使用<p>使用方法:
将任何网页网址附加到 <a href="https://web.818233.xyz/" rel="nofollow">https://web.818233.xyz/</a>,新的网址将返回原网址的网页内容。<p>我创建这个服务主要是为了提取任何网站的内容,以供大型语言模型(LLM)使用。如果您无法访问某些网站,这项服务也会非常方便。