在RetrievalMarketBuildersMini-Summit上,RaulKripalani深入研究了Lotus节点的架构和计划的更改,特别是对Lotus-miner节点的更改,以更好地满足存储服务商的需求和网络参与者。完整的谈话可以在这里找到。该演讲旨在强调为Lotus存储服务商确保检索交易高度可靠和可扩展所需的工作——帮助确保Filecoin检索市场建立在稳健的基础上。
Lotus是Filecoin网络的一个系统实现,用Go编写。作为Filecoin的第一个系统实现,Lotus旨在为整个网络奠定坚实而有弹性的基础。实现了Filecoin节点的核心功能,数据的存储与检索,从而为Filecoin网络上强大的检索市场奠定基础。
Lotus节点的演变
Filecoin生态系统正在飞速发展,Lotus等生态系统工具也在不断更新以满足网络的需求并寻求未来发展的机会。特别是检索市场将为Filecoin网络引入新功能,包括索引、CDN、公共检索等。
我们发现这些新的检索市场功能将依赖于强大的Miner基础。如今,LotusMiner倾向于解决他们认为不稳定或无偿的某些功能。归根结底,这是来自存储服务商的良好行为,它帮助Lotus发展以满足他们的需求。当网络参与者开始屏蔽某些功能时,则表明软件本身应该为其用户提供更多的灵活性和模块化。
通过这一观察,我们意识到Lotus的单体二进制文件已经阻碍了LotusMiner的灵活和稳健的操作,并试图从中找出解决问题的机会。
单体二进制?
到目前为止,Lotus节点的架构在很大程度上是单体的。Lotus有两个不同的入口点:1)一个完整节点,2)一个Miner。
然而,除此之外,网络参与者在存储生命周期中承担的责任几乎没有选择余地。例如,Miner的任务就是mining、证明存储、交易等。这些是根本不同的职责,但它们通过当前的Lotus-miner架构耦合在一起。
单体架构的问题?
从广义上讲,这种整体架构阻止了Miner在不同的职责之间有效地分配他们的资源。强制合并责任与Miner的核心动机相矛盾,即在最小化运营风险的同时实现利润最大化。具体来说,单体二进制存在许多问题。
脆弱性:当架构内没有隔离时,一个区域的错误可能会泄漏并影响其他关键流程。这使得很难在关键和非关键进程之间进行分割,并使整个实例崩溃。
增加的攻击面:LotusMiner的某些进程需要公开公共端点,这使系统的该部分容易受到攻击。如果架构是单一的,则单个公共端点可能会危及整个系统。
功能膨胀:在Filecoin的愿景中,Miner不仅存储和提供原始数据,而且还提供有用的服务,例如索引、发现等。使用新的矿工侧功能重载单个进程会导致进一步的担忧和操作风险。
无法扩展:不同的能力需要不同的特性和不同的升级过程。尝试在单一系统中管理这些不同的功能很困难,并且会导致迭代和增长缓慢。
缺乏一些细微功能控制:由于Miner无法主动选择加入或退出功能,他们必须通过拒绝交易、设置高价以阻止交易甚至分叉代码库等机制来解决这些问题。
迭代慢:单体架构意味着更难测试和创新,因为没有简单的方法来隔离新组件并选择加入实验功能而不将其引入整个系统。
迈向模块化存储服务商架构??
一个LotusMiner的职责有哪些呢,有两个不同的类别:封装和市场。这两个层共享非常不同的服务和SLA。例如,Lotus服务商的封装作业是其最具经济利润的活动,并且本质上也是私有的。然而,市场运作是完全公开的,并在不同的盈利模式下运作。
使用这种初始分类,是迈向模块化Miner架构的第一步,解决了单一架构的缺点:将LotusMiner流程分为1)Lotus市场流程2)其他LotusMiner流程。通过分离市场和mining,Lotus节点的架构对于矿工来说变得更加聚焦于功能,使他们能够将自己的职责与最适合他们的能力以及他们对网络的经济偏好的责任保持一致。
设计原则??
在朝着更加模块化的Miner架构的这条新道路上前进的同时,Lotus继续坚持一些设计原则:
避免类似微服务架构的复杂性:明确避免复杂的相互依赖网络,这些网络迅速转化为意大利面状式架构,并需要专门的工具来管理和调试。这是引入Lotus错误的复杂性级别。秩序和等级仍然存在,因为这些过程仍然是一个单一的有凝聚力的单元的一部分。
简单的中心/辐条架构:Lotus正在向中心辐射架构发展,该架构由主管实例管理。这些主管知道部署中提供了哪些功能以及哪些节点提供了这些功能,它们还充当聚合的外部API入口点。
值得投资:新的Lotus架构一定值得投资。除了盈利能力外,其他一些ROI因素包括可靠性、安全性、开发人员敏捷性和稳健性。
强大的分布式流程生命周期监督:模块化架构并不意味着完全孤立的架构,如果出现故障并且意味着其他下游服务将出现故障,那么整个系统必定能够注意到并做出反应。
为了设计这个新的运行时间,我们通过Erlang/OTP和面向角色的编程等模型来激励自己,而无需完全依赖这些框架,并从服务网格和编排器中借用精选概念和抽象概念。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。