[单排日记][191031应用无状态]

应用无状态

有对外访问的业务,公司自己搭了一套代理服务换IP。处理业务问题时,发现即使是同一个用户,连续的访问,代理IP也在一直变。就检查了代码,发现了一些问题。主要提一下应用无状态这个设计思想。

why and how

以这边的业务为例,需要维护一个可用的IP池,设计上应该尽量满足均衡使用,IP不可用时换新或者等待再次可用。均衡使用和无状态没多大关系不多提,这里就只关心IP可用性的维护。

一个很简单的做法就是,直接新定义一个数组,数组内的元素就是一个IP对象,给每个IP对象一个属性标记是否可用。这么做就是一个有状态的应用,每个IP的状态都保留在这个活动应用实例内。这么做是部分OK的,如果业务量不大,并且是单实例运行的话。

实际上目前应用开发普遍都用到了集群(听说达内都开始教docker了XD)。为了保证服务的高可用,一般生产环境都会通过k8s或者swarm配置多个应用副本,既可以分流,又可以保证在部分副本出现问题时,仍有副本可以正常提供服务(同时等待集群启动新的替换副本)。

因此,如果设计了有状态的应用,一个最大的问题就是,同一个应用的不同副本之间,状态是不方便直接沟通的。就如这个例子里,实际上是生成了双副本,那么用户访问时,第一次访问到了实例A,发现IP被封了,实例A就把自己维护的IP状态改成不可用;用户第二次访问时,如果再次访问到实例A,那么这个失效IP不会给用户,是正确的,如果访问到实例B,实例B并不知道这个IP已经失效,仍然给到了这个IP,就是错误的,没有起到维护可用IP池的功能了。而这个分流是随机的,如果没有提前考虑好,后续随机出现问题,排查起来还是很不方便的。

现在常用的方案是,需要保存的状态存放在redis内;应用保持无状态,需要的时候就去redis读写。

当然后续也有高并发下状态一致性的问题,解决方案也是根据具体业务需求来的,这一业务只要求大致准确、失败时最终检出,也就没有加锁,直接先读判断,bool取反,优先改成false即可。其他业务就看自己需求,这里不展开了喔。

栏目说明

会随便写一些日常开发遇到的问题,比较零散,后续会按知识点总结。

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,096评论 1 32
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,843评论 0 5
  • 前言:本系列题来自网络,出处应该是众多参加AWS认证的考生口口相传的。 AWS认证的行业平均年薪。 AWS SYS...
    辉耀辉耀阅读 2,091评论 0 1
  • 【什么是大数据、大数据技术】 大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法在合理时间内通过传统的应...
    kimibob阅读 2,743评论 0 51
  • 云应用设计模式 下面的章节详细介绍了一些设计模式,这些现有的设计模式可以有效地应用到云服务应用程序设计中去。 电路...
    AIOPstack阅读 812评论 0 1