Tuesday, November 13, 2018

Taobao Single's Days



https://mp.weixin.qq.com/s/om0-CFMHWHk5t-wYPVtSQg
一个重要事情是怎样减少这种花费很多人力方式,能不能搞成自动化,或者通过架构优化来解决性能以及错误等问题。用技术手段而不是堆人力方式。

复盘存储读取,读取本身有比较多监控,遇到问题有几类:
1、通用数据读取热点,数据热点会导致redis集群性能下降,这种需要定时去读取来解决。

2、这次备战时遇到新问题,刷子带来热点问题,可以采取缓存来解决。就是服务内存缓存来挡住刷子用户,避免redis产生热点。

3、连接数问题,连接过多会导致连接取不到,a、采取机房分离策略,廊房服务读廊房集群,马驹桥读马驹桥机房,减少连接。b、集群规模减小,数据存的少了,读它的就少了,读的少了,redis客户端客户端减少从而减少连接。c、连接问题通过业务拆分方式解决,单个业务单个集群,集群规模变小,业务之间影响变小,共享集群一个业务导致集群不稳定,其他集群也不稳定。c、小集群业务集群问题不大,还有偏好这种通用数据,读的业务很多,就需要一主多从来解决。

复盘遇到问题,对于存储读取前边做了很多工作,读取方面遇到问题减少了。最近又遇到存储增长问题,有同学设计了一套监控体系,对存储每个任务进行监控,监控后可以设置监控指标,达到指标后进行报警。挺好一种设计,根读取类似都是采取定量方式,清晰定位存储量问题,后续扩容还是构建新的集群就是水到渠成的事。

电商系统稳定关系着核心用户体验,保证稳定方式需要减少外部依赖,所有外部资源都可能会导致问题,减少依赖就能减少出问题的风险。另一条重要原则是后续备案,很重要一件事是要有备选方案出了问题能够有备选供选择。

降级、限流、限速、熔断等都是一种备案。
1、降级是通过降掉非核心流程,保证核心流程稳定高效。或者解决0点流量来临时,存储不稳定,网络不稳定后的处理方式,直接将逻辑降级,不使用。

2、限流,单个服务单个容器能够处理的量是有限的,单机压出上限后,增加限流google guava包有相应方法,直接用即可。

3、熔断,服务直接返回状态给客户端,客户端不再请求服务,从而保护服务,此时服务不是全的,但是不影响用户体验。

再有就是服务出现问题时,要第一时间降级操作,不要想着去解决问题,因为解决问题会耽误时间,影响用户体验,需要后续去定位问题,这是很重要一点,教过学费的。

架构设计,监控是一种重要架构哲学,对于系统优化一个前提,监控本身也能对整个系统所处状态进行呈现,作为我们的决策依据。

花费人力去盯的地方,都应该想一下怎样通过架构以及设计来解决,更多自动化去做,减少人力,用技术方式解决问题,这应该是我们应当追求的。

备案也是一种重要设计哲学,做到有备无患,不能只能看着系统崩溃而束手无策。事情一定要进行总结,才能在这件事中获得更多信息,不然更多是经过,事情要想办法去把它做好,是将来做任何事情一种很重要方式、方法。

解决技术问题,应该通过好的策略好的架构来实现。解决问题过程中我们获得技术提升。

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts