{"id":19990757,"url":"https://github.com/RayTale/Vertex","last_synced_at":"2025-05-04T10:30:44.841Z","repository":{"id":37726899,"uuid":"302798081","full_name":"RayTale/Vertex","owner":"RayTale","description":"Vertex is a distributed, ultimately consistent, event traceable cross platform framework based on Orleans, which is used to build high-performance, high throughput, low latency, scalable distributed applications","archived":false,"fork":false,"pushed_at":"2025-04-28T02:22:20.000Z","size":433,"stargazers_count":291,"open_issues_count":8,"forks_count":43,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-28T03:26:05.051Z","etag":null,"topics":["actor","cqrs","cqrs-es","distributed","event-driven","event-sourcing","orleans","saga"],"latest_commit_sha":null,"homepage":"https://raytale.github.io/vertexdoc","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RayTale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-10T02:32:51.000Z","updated_at":"2025-04-28T02:22:25.000Z","dependencies_parsed_at":"2023-02-13T14:15:27.016Z","dependency_job_id":"82002738-be23-47a7-a9a4-a24bc0f82dd1","html_url":"https://github.com/RayTale/Vertex","commit_stats":{"total_commits":204,"total_committers":6,"mean_commits":34.0,"dds":0.4362745098039216,"last_synced_commit":"09b41f2d57a93338805a29e6ecf5eaa48b1dc609"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTale%2FVertex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTale%2FVertex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTale%2FVertex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTale%2FVertex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RayTale","download_url":"https://codeload.github.com/RayTale/Vertex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252319954,"owners_count":21729039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actor","cqrs","cqrs-es","distributed","event-driven","event-sourcing","orleans","saga"],"created_at":"2024-11-13T04:51:27.534Z","updated_at":"2025-05-04T10:30:43.480Z","avatar_url":"https://github.com/RayTale.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"## Vertex是一个基于Orleans开发的分布式、最终一致性、事件溯源的跨平台框架，用于构建高性能、高吞吐、低延时、可扩展的分布式应用程序\n\n[![license](https://img.shields.io/github/license/RayTale/Vertex)](https://github.com/RayTale/Vertex/blob/main/LICENSE)\n[![NuGet](https://img.shields.io/nuget/v/Vertex.Runtime.svg?style=flat)](https://www.nuget.org/profiles/uless)\n[![Join the chat at https://gitter.im/RayTale/Ray](https://badges.gitter.im/RayTale/Ray.svg)](https://gitter.im/RayTale/Ray?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n---\n* 框架采用Event sourcing来解决分布式事务问题，除了提供超高吞吐的分布式事务能力之外，还提供状态变化的详细事件日志，易于追踪溯源，在某些领域有着天然的优势。\n  \n* 基于. Net 6.0和Orleans开发，支持从单个本地服务器扩展到多服务器集群，提供高可用能力。\n---\n\n### 项目起源\n\nVertex是Ray框架的3.0版本，Ray诞生之初是为虚拟币交易引擎提供一个全内存、高吞吐、低延时、可追溯、分布式的事务框架。\n\n*__虚拟币交易引擎的指标要求有一些硬性指标要求：__*\n  \n* 极高吞吐：大量搬砖机器人在下单撤单，对系统的吞吐要求非常高。\n  \n* 极低延时：虚拟币价格波动非常大，用户和挂单机器人都需要低延时来保证灵敏度，不然很容易亏损。\n  \n* 稳定性：7*24小时开放交易，对系统的高可用和伸缩性要求非常高。\n  \n* 横向拓展：大量的新增交易对，需要能够随时进行横向扩容。\n  \n* 可追溯性：要求对每一次金额变化和交易都有日志可追溯\n  \n*__遇到的困难__* \n\n* 事务流程较长：安全校验，金额变化，订单生成，撮合交易，订单更新，金额更新，账单生成，K线生成，挂单深度更新，触发计划订单...\n  \n\u003e 如果按照传统的解决方案，如果要满足上述要求，除了巨大的复杂性之外还需要巨大的硬件成本\n  \n经过一段时间的研究和试验之后，决定使用saga + event sourcing结合来进行业务开发，但传统的各种类似的框架都存在各种问题，特别是性能问题。所以我决定基于Orleans来开发一个通用框架，经过半年多优化改良，框架达到了交易引擎要求的各项指标，单交易对能达到5000/s的订单能力，一次订单的提交延时控制在10ms以下，多交易对的处理能力可以通过增加集群节点来提高。\n\n### 核心功能\n\n* 高性能分布式Actor\n* 事件溯源\n* 事件存储\n* 事件分发与订阅\n* 最终一致性编程模型\n* 强一致性编程模型\n\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRayTale%2FVertex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRayTale%2FVertex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRayTale%2FVertex/lists"}