如何设计一个高可用的运营系统-阿里云开发者社区

开发者社区> 欧阳愠斐> 正文

如何设计一个高可用的运营系统

简介: 概述 一个产品业务的发展总是离不开运营二字。随着业务快速的发展以及新业务的扩充,运营需求越来越大,并且很多时候需要追热点,因此在有限的资源下,如何做到快速、准确、灵活、稳定的满足日趋增多的运营需求,成了个问题。
+关注继续查看

概述

一个产品业务的发展总是离不开运营二字。随着业务快速的发展以及新业务的扩充,运营需求越来越大,并且很多时候需要追热点,因此在有限的资源下,如何做到快速、准确、灵活、稳定的满足日趋增多的运营需求,成了个问题。我们根据运营的四个基本要数(目标、人群、门槛、激励)通过对活动的抽象、建模、组件化,实现了能满足80%的运营需求的自动化运营系统,运营产品同学只需要通过一份配置文件就可以生成一个新的活动。

引子

 

通常,我们做一个活动,我们需要做什么?

我们需要UI设计、前端排版、接口定义、数据库创建、测试流程等等。这样下来整个流程快一点上一个活动大概一周左右,慢一点可能两周左右。

但很多时候,一个活动的生命周期可能就一周、一个月左右。我们是否有必要花如此大的开发代价去做这样事情?一个活动如此,那十个,一百个呢。

我们先来通过三个活动来了解一下活动的本质。

活动1,为了拉新,针对老用户,每拉来一个人,奖励20元的额度提升。

活动2,为了拉GMV,针对老用户,每还款xx元,奖励多少优惠券。

活动3,为了拉绑卡,针对全部用户,完成绑卡,就有机会抢100张1000元现金券。

...

我们可以发现活动的四个要素:人群、目标、门槛、激励

我们可以用一句话概括运营活动:

针对什么人群,我们想要达到什么目标,设置什么样的门槛(规则),最后给用户什么样的激励措施。

活动生命周期这么短,我们是否可以以比较小的开发代价来完成活动的开发呢? 是否针对某个业务的一个活动开发完?我可以快速的复用到其他业务上呢?

在这些活动的开发中,我们遇到了挑战和难题:

可维护性差:活动的生命周期短,活动下线,接口、数据库废弃,但代码遗留,代码维护性差。

开发效率低:重复开发、开发效率低、无法复用。每个活动新建接口、新建数据库表

可扩展性不高:每个活动只能运用到自己的业务上,无法快速复用到其他业务。

性能和监控: 无可靠的数据监控、性能低下。

安全低:没有做接口签名、接口限流等等,容易被刷。

运营要做什么?

于是我花了一段时间来系统性的来梳理运营体系相关东西,通过已经做了什么,来思考,我们将来怎么做?

接入业务:有了具体的产品,我们才有运营他的基础。

运营活动:有了具体的业务,通过运营活动来运营业务。

用户触达:活动出来后,我们需要告知用户才行。

数据分析:活动效果如何,我们需要分析数据,改进我们的方案。

监控告警:系统本身不是100%可靠,我们需要一些仪表盘来监控我们的系统。

安全/防刷:运营是有激励措施的,有利益,需要防止恶意侵入。

基础能力:通过抽象化、工具化提高开发效率。

组件化系统:是否有个可视化的界面,以便于运营人员的快速接入呢。

根据已做的活动经验和遇到的问题,让我不断的思考,我该如何去优化该运营系统,来提高开发效率、安全、和性能。最后,确定的一个大方向:

平台化、标准化、配置化、组件化。

系统架构设计

 

 

从上往下看:

前端层:做前后分离,动静分离、接入按钮触发统计系统、组件化模块。

网关层:接入协议适配、签名校验,接口监控统计、限流等等。保障接口安全。

逻辑层:分三个子层。

第一层:接入统一配置中心,接口标准统一化、插件化、组件化常用模块。消息处理引入观察者,抽象公用模块。

第二层:根据运营四要素,抽象出规则集(绑卡?还款等等)、奖励集(优惠券、实物?等等)构成活动主逻辑。

第三层:抽象所有活动储存结构(标签服务)、配置、监控、分布式锁计数器以服务形式提供给上层调用。

基础平台:一些依赖的基础能力:比如用户信息、订单信息、平台优惠券系统、基础推送能力等等。

存储层:所有活动数据以统一结构存储。

从左往右看:

一个活动可以快速复用到其他业务。

将活动通过广告系统、消息推送系统等推送出去。通过数据分析系统做数据分析和优化活动流程。

说明几个点:

1.活动路由

所有接口统一通过SaleService.handler接入

根据活动ID与方法找到对应执行方法。

参考MVC的路由方式

通过反射+代理模式实现

这样做的一些好处:

由于活动的什么周期短,可以通过对配置的更改,调整接口的有无。维护方便。

可以很方便的做一些公共校验或埋一些钩子,(比如是否限制登录、是否过期等)

可以与配置系统深度整合。

做一些接口监控和拦截。

2. mq消息(消息的解耦)

观察者模式

对修改关闭,对扩展开放

3.统一配置中心

可以参考之前写的统一配置中心

这里可以优化的点是,引入版本号,先更新配置+新的版本号到redis,然后再更新每个配置的版本号id, 客户端来取配置的时候,先取配置的版本,在根据版本号+配置key去redis中取配置内容,这样可以平滑的将缓存配置切换到新的缓存配置。

4.关于组件化

一个活动通常可以看成若干个组件组成。

每一个组件又有他自己的特性。

前后端如何通过组件交互?

最好能在OA编辑就完美了

最后,通过一些配置,可以快速的上线一些活动,无需开发接入,做到自动化运营。

一些个人观点

程序的开发,应该是一个搭积木的过程,一些小的模块组合成一个中等模块,若干中等模块组合成一个系统,若干系统组合成一个业务等等。

一个大的问题,可以分层分模块成若干小问题,解决若干小问题,最后解决大问题。

了解业务,才能做出更好的系统设计。

系统设计,要充分考虑到性能、可用性、可扩展性、可伸缩性、安全性等。

欢迎加入Java高级架构学习交流群:468947140
进群获取架构资料 还有在大型企业工作十余年的架构师分享经验,Java工程化管理、高性能、分布式、高可用架构、zookeeper、Spring cloud,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货
进群修改群备注:开发年限-地区-经验
点击链接加入群聊【Java-BATJ企业级资深架构】:https://jq.qq.com/?_wv=1027&k=52j2FVO
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
分布式系统架构中高可用方案技术选型:Hystrix 框架实现服务保护使用详解
本篇文章介绍了分布式系统架构下的经典的高可用框架Hsytrix实现的断路器,服务降级,服务熔断,服务隔离以及解决服务雪崩效应的问题。详细分析了基于Hystrix框架解决分布式系统中服务雪崩效应的几种机制,以及在项目中如何集成Hystrix框架并且在项目中使用Hystrix框架实现分布式系统中的服务治理。
277 0
如何设计高可用系统之故障隔离
简单来说,当功能或性能不符合预期,就是故障。减少故障的方式有多种,包括系统优化、监控、风险扫描、链路分析、变更管控、故障注入演练、故障隔离等。故障隔离是其中一种手段,并且要求在系统设计时就需要考虑清楚。
1225 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2852 0
一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战。在可控范围或环境下,使用 ChaosBlade 工具,对系统注入各种故障,持续提升分布式系统的容错和弹性能力,以构建高可用的分布式系统。
10493 0
高可用服务架构设计(12) - 基于request cache请求缓存技术优化批量商品数据查询接口
0 Github 回顾执行流程 1、创建command,2种command类型 2、执行command,4种执行方式 3、查找是否开启了request cache,是否有请求缓存,如果有缓存,直接取用缓存,返回结果 首先,reqeust context(请求上下文) 一般在一个web应用中,Hy...
2923 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10496 0
如何设计一个高可用的运营系统
概述 一个产品业务的发展总是离不开运营二字。随着业务快速的发展以及新业务的扩充,运营需求越来越大,并且很多时候需要追热点,因此在有限的资源下,如何做到快速、准确、灵活、稳定的满足日趋增多的运营需求,成了个问题。
1024 0
质量公开课第3期:云原生时代微服务的高可用架构设计
阿里QA导读:近年来互联网行业迎来了云原生时代,在全面上云的同时,应用架构也纷纷向微服务架构迁移,这也对系统稳定性提出了新的挑战,如何能够在新的架构下保证应用稳定高可用,提升业务连续性,是必须要解决的问题。本次分享将为大家介绍蚂蚁在这方面的经验和思考。
17 0
+关注
欧阳愠斐
程序员学习交流学习群:908676731
134
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载