懂球帝体育类社交平台-内容以及足球竞猜游戏的需求.整个平台内容包括如下子系统:商城子系统,足球类游戏子系统,个人中心子系统,社区子系统(首页,比赛,主队),圈子子系统,数据子系统,竞猜子系统(又包含金币竞猜玩法,欧盘玩法,亚盘玩法,专家系统等等).
从技术层面讲,对于To C层面的互联网系统,我们在设计层面主要采用了如下方案:
1.业务服务化,相互独立,如咨询、论坛、广告等。
2.无状态设计。调用链路无单点、无状态服务,可线性扩容(尽可能不要把状态数据保存到本机、接口调用做到幂等性)
3.可复用。复用的粒度是业务逻辑的抽象服务,不是服务实现的细节、服务引用只依赖服务抽象
4.资源分层。Redis、DB、MQ 主从设计,多机房部署、保障高可用.
5.松耦合、自保护、防雪崩。跨业务调用尽可能异步解耦,必须同步调用时设置超时、队列大小、线程池大小、相对稳定的基础服务与易变流程的服务分层;线程池保护,超出服务器最大线程时DROP请求(Nginx、Tomcat)。Redis、DB、MQ、RPC、HttpClient等在后端资源出问题时可以自动降级请求调用、发送异常报警
6.服务隔离可自理。服务可降级、可限流、可开关、可监控、白名单机制(未实现)
7.各个服务独立部署互不影响,服务异常自动熔断,根据各个服务特点走相应的降级策略。基础服务下沉可复用基础服务自治、相互独立、基础服务要求尽量精简可水平扩展、物理隔离保证稳定(如用户中心、产品库)
8.分清核心业务。核心业务服务尽量精简,利于稳定(运行时优先保证主流程顺利完成、辅助流程采用异步:如日志上报)。
9.基于zookeeper的配置服务(配置服务用于系统的各种开关的实时配置如:源接口的限流熔断阈值等);Monitor:监控服务实时查看系统异常、流量;Trace:系统跟踪服务;Log:(日志服务)(部分实现)
开发框架层面:启用微服务开发模式,springboot+springcloud技术桟做为架构技术支撑,
RabbitMQ, Redis,Mysql等等开源工具。