On Designing and Deploying Internet-Scale Services
Three simple tenets
1. Expect failures
2. Keep things simple
3. Automate everything
1. Overall Application Design
1. Design for failure
2. Redundancy and fault recovery
3. Commodity hardware slice
4. Single-version software
5. Multi-tenancy
6. Quick service health check
7. Develop in the full environment
8. Zero trust of underlying components
9. Do not build the same functionality in multiple components
10. One pod or cluster should not affect another pod or cluster
11. Allow rare emergency human intervention
12. Keep things simple and robust
13. Enforce admission control at all levels
14. Partition the service
15. Understand the network design
16. Analyze throughput and latency
17. Treat operations utilityies as part of the service
18. Understand access patterns
19. Version everything
20. Keep the unit/functional tests from the last release.
21. Avoid single points of failure
2. Automatic Management and Provisioning
1. Be restartable and redundant
2. Support geo-distribution
3. Automatic provisioning and installation
4. Configuration and code as a unit
5. Manage server roles or personalities rather than servers
6. Multi-system failures are common
7. Recover at the service level
8. Never rely on local storage for non-recoverable information
9. Keep deployment simple
10. Fail services regularly
3. Dependency Management
1. Expect letency
2. Isolate failures
3. Use shipping and proven components
4. Implement inter-service monitoring and alerting
5. Dependent services require the same desgin point
6. Decouple components
4. Release Cycle and Testing
1. Ship often
2. Use production data to find problems
3. Invest in engineering
4. Support version roll-back
5. Maintain forward and backward compatibility
6. Single-server deployment
7. Stress test for load
8. Perform capacity and performance testing prior to new releases
9. Build and deploy shallowly and iteratively
10. Test with real data
11. Run system-level acceptance tests
12. Test and develop in full environments
5. Hardware Selection and Standardization
1. Use only stantard SKUs
2. Purchase full racks
3. Write to a hardware abstraction
4. Abstract the network and naming
6. Operations and Capacity Planning
1. Make the development team responsible
2. Soft delete only
3. Track resource allocation
4. Make one change at a time
5. Make Everything Configurable
7. Auditing, Monitoring and Alerting
1. Instrument everything
2. Data is the most valuable asset
3. Have a customer view of service
4. Instrmentation required for production testing
5. Latencies are the toughest problem
6. Have sufficient production data
7. Configurable logging
8. Expose health information for monitoring
9. Make all reported errors actionable
10. Enable quick diagnosis of production problems
8. Graceful Degradation and Admission Control
1. Support a "big red switch"
2. Control admission
3. Meter admission
9. Customer and Press Communication Plan
10. Customer Self-Provisioning and Self-Help
具体内容请参考JamesRH_Lisa博士的论文《On Designing and Deploying Internet-Scale Services
》
分享到:
相关推荐
Cassandra的设计理念是牺牲部分ACID属性以换取高可用性和可扩展性,这使得它在互联网和物联网应用中广泛应用。 **HBase** 是建立在Hadoop之上的分布式列式数据库,它提供实时的数据访问。《The Definitive Guide to...
在本文档中,有关大型数据库系统架构设计方法的知识点涵盖了大型系统设计的核心理念,包括可扩展性、高可用性、负载均衡、容错以及失效转移。此外,还涉及了数据库的基础概念,如ACID特性和关系数据库的基本原理。 ...
总的来说,企业大型互联网分布式架构是一个集成了众多成熟技术的综合平台,为企业构建高性能、高可用的互联网应用提供了坚实的基础。开发者可以通过这个框架快速开发出满足业务需求的应用,同时享受到模块化和微服务...
"宠友"APP是一款基于服务设计理念的宠物应用,旨在满足现代人对宠物服务多元化的需求,特别是针对狗主人。随着社会的发展,狗已经从单纯的陪伴动物转变为家庭成员,人们对其的关注和投入日益增加。然而,现有的宠物...
这本书通过详细讲解理论与实践相结合的方式,为读者揭示了分布式网站架构的设计理念和实施策略。 首先,书中涵盖了分布式系统的基石——负载均衡。负载均衡是将工作负载分布到多个计算资源上,以提高服务响应速度和...
【企业大型互联网分布式架构】...总的来说,这个大型互联网分布式架构是基于模块化、服务化和热插拔设计理念构建的,它整合了一系列先进的开源技术,为企业构建稳定、高效、可扩展的信息化系统提供了强有力的技术支撑。
5G+工业互联网的设计理念注重创新、质量和效率的全面提升。通过建立5G虚拟专网,确保数据安全和灵活性,实现OT网络与5G的无缝对接。借助中国移动的工业互联网平台,构建数字化运营和协同制造平台,促进全链条的数据...
本文围绕着如何基于互联网技术对大型非标结构件设计与营销进行创新能力建设展开讨论。文章首先指出,“互联网+”时代的到来迫使各行各业必须深度融合互联网与传统行业,利用互联网的优势,通过科技赋能传统产业,...
综上所述,文档介绍的知识点涉及了互联网教育的实施背景、面临的挑战、在线练习考试系统的设计理念和实施效果。同时,也提到了Java语言在系统开发中的应用以及系统优化和特色模块的融入,旨在提升学生的学习效率和...
2. **模块化设计**:通过模块化的设计理念,将网站的不同功能分解为独立的模块,便于管理和维护。 3. **代码重用**:利用PHP丰富的类库和组件,实现代码的重用,提高开发效率。 4. **性能优化**:通过对代码的优化、...
书中可能会讨论如何将设计理念与前端开发、后端系统和数据库设计相结合。 8. **持续改进**:信息架构是一个动态的过程,需要通过用户反馈和数据分析不断迭代优化。A/B测试、用户反馈系统和数据分析工具的使用可能会...
本篇文章探讨了在这一趋势下,如何更有效地将互联网技术与室内设计理念相融合,并对智能家居产品的安全、节能和人性化等方面进行了深入分析。 首先,智能家居作为室内设计的一部分,其设计理念应以提供更加舒适、...
企业级互联网架构的设计理念是基于Aliware旗下的一系列分布式基础服务构建应用企业级互联网架构平台。该架构设计理念包括服务管控、计量、SLA承诺、协议转换网关、存量API管理、安全调用EDAS、DRDS、MQ、ARMS等技术...
云计算作为一种按需提供计算资源和数据存储的互联网服务模式,已广泛应用于各个行业,其中智慧高速大型软件应用是其中的重要应用之一。智慧高速是一种利用先进的信息通信技术,实现高速交通的智能化管理和服务的现代...
本文将详细探讨新浪动态应用平台后端系统以及自动化运维系统开发实践中的关键知识点,分析其技术架构的设计理念、实践过程中遇到的挑战以及解决方案。 首先,文档中提到了“Lamp项目托管平台”,这里指的应该是使用...
传统的单体应用已经难以满足现代互联网应用的需求,分布式系统成为解决高并发、大数据量等挑战的有效手段。本文将深入探讨大型分布式网站的设计理念与实践方法,帮助读者理解分布式系统的基本原理和技术选型。 ####...
总之,《大型网站技术架构》深入解析了构建大型网站涉及的各种技术和最佳实践,包括JAVAWEB框架的应用,以及负载均衡、分布式服务、数据库优化等多个层面。这些知识对于任何希望在互联网行业发展的工程师来说都是...
本资料主要通过深入讲解网站的发展历程,帮助读者理解大型网站架构的核心设计理念和关键组件,以便在实际工作中能够做出更加明智的决策。 首先,我们要理解网站架构的重要性。随着互联网的飞速发展,网站的规模和...
例如,小米手机通过网络营销,将“小米手机为发烧而生”的设计理念转化为惊人的事实消费,手机话题的应用和微博用户互动,不断挖掘小米手机卖点,分享图文并茂的小米手机测评,牢牢把握消费心理,在短时期实现了品牌...
大型船舶的复杂性和长期维护需求,使得企业需要通过工业互联网来优化设计、生产和维护流程。目前,中国船舶制造业在全球市场占据重要地位,而全球化业务的发展则要求企业能提供更个性化的定制服务,通过工业互联网...