基于基本原则,架构方面正好够用就是最好的,禁忌过度设计,但要想好后续的平稳扩展方案
前期设计
本着大道至简的原则设计如下:
web端使用Beego框架,且使用restful风格的API
登陆token验证,本打算使用JWT,但我还是喜欢自建
数据库操作使用ORM
缓存使用redis
日志服务使用elaticsearch
数据缓冲kafka
消息推送:米推
短信推送:阿里云
数据仓库:maxcompute
我也是刚用golang,为了快速搭建我使用了beego。
有人说golang不是面向对象的,beego做的特别像JAVA的MVC面向对象的框架,这与golang面像函数试编程的思路有冲突。
关于这点我想说一下,MVC是设计模式,它不是JAVA专有的,也不是面向对象的语言专有的,golang中的interface与struct配合起来甚至可以更灵活的完成多态、继承、封装。
在我的github上有使用golang实现的一些常用的设计模式:
https://github.com/arno99x/go_study/tree/master/pattern
golang语法很灵活,可以挖掘出更多、更优雅的写法
后期设计
搬家至微服务,让模块间偶合更少,团队更敏捷,扩展更容易
微服务是企业应用不断扩大的必然产物,它便众多的服务管理起来更加的方便,让越来越多的服务加入到服务群中变成了现实,当然对公司技术团队也有更多