我辈所解之真问题
吾受命主修Veltrix,此乃高流量寻宝引擎,需无碍扩容,以应巨量增长之骤起,不致停滞。配置层之关键,在于决吾服务器能否顺遂扩容,抑或于初现增长之转折点即停滞。吾等知传统之单体架构,难堪此负,故必另辟蹊径。经数周研商,吾等决意采用事件驱动之架构,使吾等服务得以解耦,各自扩容。此决非轻下,盖需重修既有代码,且增系统之繁复。
吾初所试者何(And Why It Failed)
初,吾侪欲行事件驱动之架构,然尝欲用传统之请-应模式,每请必引诸服务之同步调用链。然此法速显不可扩,随用户众之增,请之数亦指数而长。吾侪用Apache Kafka为信使,然未尽其用。诸服务紧密相系,一服务之变,必波及全系统。频遇错误,如Kafka之恶名:Broker或不可用,系统亦日增不稳。是故,吾侪知当易其道矣。
架构之决
吾等决意采用全然之事件驱动架构,使每项服务皆能生发并消纳事件,从而令其完全解耦。吾等以Apache Kafka为事件之存储,每项服务皆将事件发布于Kafka之主题,继而由他项服务所消纳。此法使吾等得独立扩展服务,且能于巨量增长之峰时不致停滞。吾等亦以Netflix之Eureka实施服务发现之机制,使服务得自行注册,并为他项服务所发现。此法增吾系统之复杂,然为达所需之可扩展性,实属必要。吾等亦须实施健全之监控与记录系统,以Prometheus及Grafana等工具为用,以确保能迅速察觉并应对任何问题。
数之谓何后
既行事件驱动之构,吾等见系统之可扩展性与效能大增。吾等得应十倍之交通量而无碍,系统亦能无痕扩展以承其负。误率大减,吾等得将恢复平均时间(MTTR)自三十分钟减至五分钟。吾等亦得将基础设施之费减三成,盖因得优化资源之用,去不必要之实例。吾等之指标示,系统能应每秒一万之请求数,平均应答时仅五十毫秒。吾等得此成就,乃兼用 Kafka、Eureka 及吾等自制之服务,皆运行于 Amazon Web Services(AWS)之上。
吾将异行
回望之,吾欲早行更周密之测试策,以保吾系统未启用前已受详尽之验。吾等尝遇服务发现之机制有碍,致部分服务暂不可用。虽能速解,然此教训实痛。吾亦欲早行更周密之安策,以保吾系统安固且合诸相关之规。吾等用AWS IAM角色及自建之安机制,然犹可更尽力于系统之安。总而言之,吾为吾等以Veltrix所成而自豪,信吾等之事件驱动架构实为吾系统之宜。此架构使吾等得无碍之扩,堪应巨量之增,复为吾用户提供周密可靠之平台。























