啊,水了半个晚上,想了些有的没的……然后突然觉得状态不对,想发泄一下,于是就想起我那一套破应用,结合最近写我那一套的web端……觉得可以再水一会儿,半总结半吐槽一下我的那一套。
想来我这一套从最底层的框架到现在已经写了两年多了。两年来学到了很多,主要是见识了很多诡异的业务场景,以及见识了很多诡异的技术实现……总的来说,我这一套算的上是一份保险,保证了我这两年不管怎么着,总还是有些进步的。
当然,既然是总结和吐槽我的一套应用,那运维相关能省就省,然后会更主观的看待我的一套东西。
这一套应用的主要目的其实就是实现更自动化的自我管理,所以主要的两个应用都有很强的管理性质——一个账本,一个卡墙(类似trello那种卡墙,当然功能定位都不太一样)。其他还有一些小的,或者更技术性的应用,比如认证服务器之类的,更多的其实和本身的目的关系不大,更多的是为了技术追求。
不过,咸鱼的是,即使有技术追求,限于时间和精力乃至能力和认识有限,我这一套应用有很多奇奇怪怪的地方。以至于我自己都快看不懂我的技术追求到底是什么了……
这段时间我在做我所有应用的web端。出于不喜欢web开发的那么多条条框框,以及不喜欢那种技术思想都疯狂更新换代的感觉,因为如果思想都不停的进步,那就有充足的理由怀疑现在流行的思想会不会在下个月被抛弃。出于这种心态,我的所有应用,有桌面应用、有安卓应用、有微信公众号,就是死活不写web。但是,毕竟浏览器还是好用,所以最后还是觉得做个web端。
但不得不说,由于技术偏见,web端始终就是干儿子。但干儿子有干儿子的好,毕竟外人,外人更能看清楚我一整套应用到底有多诡异……
web这一套的技术栈大概就是,spring+我自己的那套底层框架+纯·真·javascript。是的,毕竟干儿子,不愿意费神去折腾nodejs和npm以及bower那一套,想来想去,直接裸奔算了。前端风格很有上个年代的感觉,我记得2000的时候还没jQuery吧?反正我连jQuery都懒得上了,就知道这干儿子到底是有多肝了……
干儿子嘛,毕竟不能和亲儿子们比。应用间的调用都是相互调用,有来有回,你找我要个id,我找你要个key,好不和谐。但是到了web这个干儿子,不好意思,xxx服务提供xxx接口,请认证后按xxx格式调用此接口,如果有什么问题,我们会推送过去,谢谢合作,再见。总之,就是web的后端服务器,说白了就是满世界找应用服务器要数据、提请求。
最近在做登陆,做了一周了,不是说我消极怠工,而是干儿子想做点事情实在太难了,所有业务都不在干儿子身上。就像人家大户人家,虽然啥事都得干儿子干,但是真正实权啊,金库钥匙啊,还是在自家人手上。
这个登陆功能的流程大概是这样的。首先,找到服务查询服务,去查询到底登陆服务器在哪。然后去连接登录服务器登陆。然后又去找查询服务查询应用又在哪。然后找应用要一个与登录服务器有关的key。然后拿着这个key去找登录服务器说我要登陆应用。最后应用服务器推送消息过来说登陆成功。
槽点一,我就登个陆,前前后后要调三个服务。
槽点二,拿key给登录服务说要登录应用之后,人家登录服务器根本不理你的,直接给应用使个眼色,应用走过来跟你说,你登录成功了。
槽点三,这都算了,关键是,一步一步的http请求其实没啥是吧?喵的这些应用根本不用http,使用自定义协议+长连接,而且理论上每个消息都不会有什么回复,所谓的回复其实都是消息推送,推送过来的。
就是说,干儿子现在要办点事情,首先得去找管家问,问家里其他兄弟都在哪。然后找到二儿子说我是某某某,然后又去找大儿子,问他你和二儿子今天什么暗号。然后最后去和二儿子说我找大儿子有事,今天暗号是xxx。然后就没后文了,就看大儿子和二儿子一顿交头接耳。然后经过了一段尴尬的时间,大儿子说,好今天你要干嘛?干儿子:……, 吔屎辣?
整个问题在于,我页面点了个登陆按钮,web的后端服务器就去调那些亲儿子们,然后根本不知道什么时候亲儿子会给你回复。虽然这个问题通过一个后端消息队列,和前端不断请求这个队列解决了……
嘛,就像一个大户人家,总有那么些变态的地方……我这一套应用最变态的就是自定义协议和长连接。其实最开始的时候,我的底层框架还是实现了http的,只是因为当时并没有写web端的打算,请求回复的方式,更接近推送,所以索性扔了http,走向了维护长连接采用自定义协议的不归路。
现在,突然来了个干儿子,整个思路都不太一样。然后现在要做集成,我觉得吧,挺有挑战的,毕竟在一套应用外套一层来给完全不同的世界用还是挺恼火的。但挑战归挑战,这个不得不说,如果有来生,我才不搞什么长连接,老老实实的http,推送什么的还是算了……
好的方面是,这种集成我觉得还是比较少见的,毕竟奇葩是少数。而这种长、短连接的集成下带来的连接管理的确很有意思。主要消息的转发、处理其实里面又挺多诡异的操作,然后由于要和多个服务同时维持长连接,根本不知道什么时候会收到什么,所以像登陆这种对消息顺序有要求的情况,也会很难处理。
当然,这也能一定程度上提高我的UI设计和实现能力,毕竟我这个前端总的来说还是出于上个年代的水平。也可以稍微练练,毕竟手残画不出UI就算了,但还是可以抢救一下我对美的表达……
总的来说,这两年,从socket、数据库,到假·微服务。感觉还是比较充实,就是业务需求显得比较智障,但是其他还是不错。值。
网友评论