加油网络之技术架构

一个系统应该是先设计业务架构,再设计技术架构。业务架构主要是为“人”理解系统,而出的方案。既要考虑新业务加入时的扩展性,也要抽象出业务的通用能力,提高系统复用性。技术架构是为“机器”落地业务而设计的方案,架构的方案要高性能,能快速实现业务功能,同时,也要保证系统在出现问题时的可用性,还要从伸缩性和低成本上来充分设计系统。

系统架构设计顺序及要素

技术架构的理解

在了解系统的业务之后,下一步需要从技术层面来设计系统架构。这其中包含选择那种开发语言、开发框架、数据库类型、中间件及对应的硬件配置等。其中,有些选择还是和业务有一定的关联性。在确定了基础技术要素后,还需要设计系统的非功能性要素,比如,怎样设计高性能、高可用、可伸缩、成本预算低的系统,这样才算构成了技术架构的设计目标。

加油网络业务概览图

基于业务理解,现在大部分加油网络平台都是一体四端型业务。用户在小程序上加油,订单落地后,平台收益、服务商收益、油站结算等系统都会自动计算,以保障利益相关者的权益。

这个系统的变化点主要集中在用户端和运营端,用户端主要是业务线的不断拓展,需要系统能快速适应新的需求,设计上要考虑抽象出业务线的通用能力,在落地时用单独的工程或服务来支撑。运营端主要是在“网络”上发挥价值,不断叠加新的玩法,设计上把营销功能拆分到上层,这样业务层就能快速自我调整以满足需求。

架构时不需要四端一起设计完成,可以先设计用户端、运营端、商家端的部分功能,后期再迭代及增加管理端。

架构的本质是通过合理的内部编排,保证系统高度有序,能够不断扩展,满足业务和技术的变化。

技术架构的设计

1、系统架构

架构设计是一门艺术而不是纯技术的方案,所以依据加油网络前期的业务需求,以下设计方案基本能满足业务的发展需求。具体内容可参考<加油网络平台之业务架构>。

技术架构图

2、应用部署架构

产品流程:用户在小程序上加油并支付完成后,订单会先落到运营后台,然后进一步推送到服务商管理系统,油站商家系统,油站商家系统接单后,推送给Pos系统,同时打印加油小票,用户可以凭加油小票去前庭给加油员完成加油。

架构设计的主要目的之一是为了解决软件系统复杂度带来的问题。再结合架构设计的三原则(合适优于业界领先、简单优于复杂、演化优于一步到位),及高性能、高可用、伸缩性、低成本因素设计了以下方案。

应用部署架构图

高性能:一个加油网络平台的初期用户大约 5 ~ 50 万人,系统的访问频率并不是特别高,是一种典型的高读低写的系统,因此性能这部分并不是很复杂,存储用读写分离的MySQL 完全能够胜任,因油站等资源数据量大,可用双节点缓存来处理,Web 服务器用 Nginx 绰绰有余。为了进一步提高性能,油站数据也是放在了 Redis 中,每天凌晨,通过定时任务,模仿前端小程序,遍历访问每个油站数据,实现对缓存的预刷新,进一步保证缓存数据的一致性,也避免了缓存数据的同时失效,导致缓存雪崩。

高可用:加油网络系统需要7*24能对外提供服务,因此,设计了基于负载均衡的Web服务器集群方案,暂时不用考虑异地多活这类复杂的方案了。但是,如果用户的数据丢失,修复是非常麻烦的,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可用,这里就有点复杂了。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计 MySQL 同机房主备方案;针对机房故障,我们需要设计 MySQL 跨机房同步方案。

伸缩性:架构上采用了虚拟机方案,在需要扩缩容时,可通过运维人工添加,因此可伸缩性也不复杂。

安全性:系统存储的信息有一定的隐私性,比如,用户的个人信息,因此安全性方面只要做 3 个事情就基本满足要求了:Nginx提供 ACL控制、用户账号密码管理、数据库访问权限控制。

成本:由于系统前期业务并不复杂,基本上几台服务器就能够搞定,这里主要是租用云服务厂商的机器,对于互联网公司来说完全不是问题,可以无需太多关注。

上面的架构设计看似简单,其实是遵循了设计原则的合适原则和简单原则,是适合现有业务的发展的。比如,淘宝的发展案例,以下部分内容摘自《淘宝技术发展》。

2003年4月7 日马云提出成立淘宝,2003年5月10日淘宝就上线了,中间只有1个月,怎么办?淘宝的答案就是:买一个。

估计大部分人很难想象,如今技术牛气冲天的阿里最初的淘宝竟然是买来的,淘宝当时在初创时,没有过多考虑技术是否优越、性能是否海量以及稳定性如何,主要的考虑因素就是:快!因为此时业务要求快速上线,时间不等人,等你花几个月甚至十几个月搞出一个强大的系统出来,可能市场机会就没有了,黄花菜都凉了。

从这个实例我们可以看到,淘宝最开始的时候业务要求就是“快”,因此反过来要求技术同样要“快”,业务决定技术,这里架构设计和选择主要遵循的是“合适原则”和“简单原则”。

3、加油服务序列图

三方平台加油序列图

加油网络的一大业务方向是B端服务输出,业务输出需要系统能打通,具体是由开放平台模型来负责。主要分为API+H5,纯H5,预付款等三种模式。以上是API+H5的业务交互序列图,主要分为油站信息请求和在线支付两步。

总结,加油网络技术架构的设计,首先应采取简单的方式(简单原则),满足现有业务的发展需要(合适原则),之后,再随着业务的发展逐步去演化(演化原则)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容