武让

<div class="post-content markdown" itemprop="articleBody">
<div class="main-content-wrap">
<h1 id="1-共享服务体系搭建"><a href="#1-共享服务体系搭建" class="headerlink" title="1. 共享服务体系搭建"></a>1. 共享服务体系搭建</h1><ul>
<li>ESB解决异构系统之间的交互</li>
<li>去中心化分布式服务框架除了对于 SOA 特性的实现和满足外,相比中心化服务架构最重要的不同就是服务提供者和服务调用者之间在进行服务交互时无需通过任何 服务路由中介, 避免因为中心点带来平台能力难扩展问题,以及潜在的雪崩影响</li>
<li>关于雪崩<ul>
<li>企业服务总线架构一旦遇到上面所提到的“雪崩”事故后,故障恢复的时间和成本都非常高昂。因为传统的一台一台重启服务器已经不能进行故障的恢复,因为一旦服务启动起来,前端的访问洪流会立即再次压垮启动后的服务器,唯一正确的方式则是首先切断前端应用对企业服务总线的服务请求,让这10台服务器全部启动后,再开放服务请求,这样才能恢复系统的运行。但因为着急恢复系统,没有来得及定位之前造成开始服务实例出问题的根本原因,这样的系统恢复运行其实处于一个“脆弱”的状态,之前造成服务实例宕机的问题可能让“雪崩”事故再次上演。</li>
</ul>
</li>
<li>微服务架构的典型特征<ul>
<li>分布式组成的系统</li>
<li>按照业务划分也不是按照技术划分</li>
<li>做有生命的产品而不是项目</li>
<li>智能化服务端点与傻瓜式服务编排</li>
<li>自动化运维</li>
<li>系统容错</li>
<li>服务快速演化</li>
</ul>
</li>
<li>关于微服务的”微”<ul>
<li>“微服务”中的这个“微”字给很多人带来了很多误解。从字面意思上,“微”会让人联想到一个微服务就应该是功能足够单一,甚至出现一个服务的实现可能只需要几十或者上百行代码的说法,这应该是最误导人的观点。从技术角度出发,确实可以通过简短的代码实现功能单一的服务,但从一个整体架构考虑,如果是以这样的方式实现各个微服务,则在整个服务体系范畴当中包含太多功能边界,那么对于服务运营的分工和边界就很难界定,给服务接下来的持续运营和维护带来困扰;另外拆分过于细化的服务,势必将带来大量无谓的分布式事务调用,给业务的实现带来额外的工作量和风险。</li>
</ul>
</li>
</ul>
<h1 id="2-服务中心建设"><a href="#2-服务中心建设" class="headerlink" title="2. 服务中心建设"></a>2. 服务中心建设</h1><ul>
<li>服务中心一定是不断发展的</li>
<li>尝试服务化 - 全面服务化 - 服务平台化</li>
<li>服务中心的多样性<ul>
<li>接口:API</li>
<li>工具:配置服务、管理服务</li>
<li>数据:大数据分析</li>
</ul>
</li>
<li>服务中心可以进一步划分</li>
<li>服务中心和业务不一定一一对应</li>
<li>服务中心划分原则<ul>
<li>三个方面<ul>
<li>设计</li>
<li>运营</li>
<li>工程</li>
</ul>
</li>
<li>四个原则<ul>
<li>高内聚低耦合</li>
<li>数据完整性</li>
<li>业务可运营</li>
<li>持续渐进</li>
</ul>
</li>
</ul>
</li>
</ul>
<h1 id="3-数据拆分"><a href="#3-数据拆分" class="headerlink" title="3. 数据拆分"></a>3. 数据拆分</h1><ul>
<li>数据尽可能平均拆分(用户订单和子订单Hash方案)
如果是按照订单ID取模的方式,比如按64取模,则可以保证主订单数据以及相关的子订单、订单详情数据平均落入到后端的64个数据库中,原则上很好地满足了数据尽可能平均拆分的原则。</li>
<li>通过采用买家用户ID哈希取模的方式,比如也是按64取模,技术上则也能保证订单数据拆分到后端的64个数据库中,但这里就会出现一个业务场景中带来的一个问题,就是如果有些卖家是交易量非常大的(这样的群体不在少数),那这些卖家产生的订单数据量(特别是订单详情表的数据量)会比其他卖家要多出不少,也就是会出现数据不平均的现象</li>
<li>尽可能减少事务边界
所谓的事务边界即是指单个SQL语句在后端数据库上同时执行的数量,上面示例中就是事务边界大的典型示例,即一条SQL语句同时被推送到后端所有数据库中运行。事务边界的数量越大,会给系统带来以下弊端:</li>
<li>系统锁冲突概率高</li>
<li>系统难以扩展</li>
<li>整体性能差</li>
<li>异构索引表避免全表扫描
即采用异步机制将原表内的每一次创建或更新,都换另一个维度保存一份完整的数据表或索引表。本质上这是互联网公司很多时候都采用的一个解决思路:拿空间换时间</li>
</ul>
<h1 id="4-异步化"><a href="#4-异步化" class="headerlink" title="4. 异步化"></a>4. 异步化</h1><ul>
<li>业务流程异步化:MQ</li>
<li>数据库事务异步化:解决平台性能的核心问题<ul>
<li>大事务拆分小事务</li>
<li>降低资源被锁造成的性能瓶颈</li>
</ul>
</li>
<li>事务与柔性事务
BASE是指基本可用(BasicallyAvailable)、柔性状态(SoftState)、最终一致性(EventualConsistency)<ul>
<li>“基本可用”是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。</li>
<li>“柔性状态”是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是柔性状态的体现。MySQLReplication的异步复制也是一种柔性状态体现。</li>
<li>“最终一致性”是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。</li>
</ul>
</li>
<li>ACID与BASE区别<ul>
<li>ACID和BASE代表了两种截然相反的设计哲学。ACID是传统数据库常用的设计理念,追求强一致性模型;BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。</li>
</ul>
</li>
</ul>
<h1 id="5-数字化运营(异常追踪和定位)"><a href="#5-数字化运营(异常追踪和定位)" class="headerlink" title="5. 数字化运营(异常追踪和定位)"></a>5. 数字化运营(异常追踪和定位)</h1><ul>
<li>在每个应用集群的运行环境中,每当应用中进行了远程服务调用、缓存、数据库访问等操作时,都会生成相关的访问日志并保存到应用所在的服务器上。</li>
<li>在每一个URL请求都会生成一个全局唯一的ID,鹰眼平台中称为TraceID,这个ID会出现在该请求中所有服务调用、数据库、缓存、消息服务访问时生成的所有日志中。</li>
<li>TraceID一般包含:<ul>
<li>IP地址:在淘宝环境可直接映射到前端应用。</li>
<li>创建时间:在存储时用于分区。</li>
<li>顺序数:用于链路采样。</li>
</ul>
</li>
</ul>
<h1 id="6-平台稳定性"><a href="#6-平台稳定性" class="headerlink" title="6. 平台稳定性"></a>6. 平台稳定性</h1><ul>
<li>限流和降级
相当于电路上的保险丝,当过载的时候掐掉一些流量,让系统有能力集中资源以较快的速度处理平台处理能力范围内的业务请求。</li>
<li>压测<ul>
<li>被压测的单机的关键指标(CPU利用率、系统整体负载、QPS、响应时间等)达到的阀值水位后即自动停止压测,以免对生产环境产生大的影响。</li>
<li>基础数据抽取:模拟尽可能真实</li>
<li>链路和模型:用户的行为不同,代表链路,参数,模型不同,需要综合考虑模拟真实行为</li>
<li>影子表:数据的隔离是全链路压测诞生阶段的一大难题。全链路压测的链路有读有写,并且在线上进行,为了不污染到线上的正常数据,全链路压测在同一个数据库的实例上对数据库表建同样结构的影子表来进行数据的隔离。</li>
<li>安全机制:全链路压测的安全机制分两层:第一层是安全的监控和保护,建立非法流量的监控机制,正常用户访问不了测试数据,测试账户也访问不了正常数据,防止数据错乱;并且设置压测引擎集群的白名单,防止恶意访问;第二层是对压测流量的安全过滤,针对压测流量放松安全策略,使得压测流量不被判别为攻击流量。</li>
</ul>
</li>
</ul>
<h1 id="7-服务化野蛮生长面临的问题"><a href="#7-服务化野蛮生长面临的问题" class="headerlink" title="7. 服务化野蛮生长面临的问题"></a>7. 服务化野蛮生长面临的问题</h1><ul>
<li>服务的数量和业务覆盖越来越大
怎么样才能非常高效地找到我需要的服务,并能快速地接入和使用起来?当团队和业务规模小的时候,面对面的交流是最有效的方式,但是当到达一定的数量级的时候,通过人与人之间的互通有无肯定不可行了。</li>
<li>应用和业务架构越分越细,服务越来越专业化,跨领域理解的成本越来越高</li>
<li>服务安全控制层缺乏</li>
<li>应用不知道哪些下游业务在使用,升级或变更时与依赖方沟通花费大量时间</li>
<li>服务被未授权的业务方调用</li>
<li>随意发布服务</li>
<li>开发体验不友好,产品接入时,开发使用手册,文档建设差</li>
<li>整体服务缺乏一个统一的服务治理层<ul>
<li>在线化</li>
<li>数据化</li>
</ul>
</li>
</ul>

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

推荐阅读更多精彩内容

  • 前言 随着业务的快速发展我们日常遇到的系统性能压力问题也逐渐出现,甚至在部分场合会遇到一些突发的营销活动,会导致系...
    monkey01阅读 29,257评论 4 46
  • 前言 随着业务的快速发展我们日常遇到的系统性能压力问题也逐渐出现,甚至在部分场合会遇到一些突发的营销活动,会导致系...
    公子小白123阅读 654评论 2 6
  • 高德全链路压测平台TestPG的架构与实践(转) [架构师社区](javascript:void(0);) 今天 ...
    Mark1317阅读 442评论 0 0
  • 土鼠妹妹阅读 302评论 6 9
  • 我们常常使用手机恢复出厂设置,而往往使用电脑出现故障就只能重装,电脑系统也是可以恢复初始状态的,而不需要重新装另一...
    哆啦森玩转IT阅读 3,107评论 0 1