1. 业务
- 核心模型:用户、关系、Feed
- 把微博比作邮件:Inbox、Outbox
- 主要业务功能:发布、查看
2. 技术架构
- 微薄本质:消息分发系统
- 信息聚合设计模式:PULL、PUSH
- PUSH:简单,是实现的首选;分发量大;冗余存储大
- PULL:节约存储;计算量大
3. 架构挑战
1)除夕、春节时的系统峰值处理
解决方案:异步设计
-不同步等待
-将消息存入MQ:大量使用Memcacheq,提到使用MQ的原则“计算开销大于消息分发开销”(不太理解)
-轻量级的发表
2)实时性
解决方案:Cache中心化,Ram is the new the disk
-多层次的Cache:Local Cache;Memcached;Database buffer/cache
-容量问题(TB级):压缩(QuickLZ、LZO、不使用gzip)
-单点问题:Consistent hash;Read-through cache
-避免evictions:容量规划;区分永久数据、临时数据;不使用随机字符做为KEY
-multiget hole问题:Memcached replication
如何实现Read-through and write-througe cache:
-产品或者项目:MySQL memcached UDF;Cache money for Ruby on Rails
-wrap a proxy for the db driver
3)海量存储
4)国内网络带宽
-存在问题:访问速度、IDC不可用、故障
-分布的核心是数据分布(http://timyang.net/data/multi-idc-design/)
5)API访问量
-使用REST API
-使用SAE解决轮询压力
分享到:
相关推荐
它基于Model-View-Controller(MVC)架构模式,旨在简化开发过程,提高代码的可维护性和可扩展性。Struts 1是早期版本,而Struts 2是其后续升级版,引入了更多现代Web开发特性。 在“struts中文文档及学习笔记”中...
2. 架构设计原则:将阐述设计系统或应用时需要遵循的基本原则,如模块化、可扩展性、易维护性等。 3. 主要组件和它们的关系:会详细解释系统中的各个组成部分,以及它们如何相互协作,形成一个完整的工作流程。 4....
这样的技术选型确保了系统的可扩展性和稳定性。 **系统功能结构设计** - **用户管理**:系统管理员可以对用户信息进行增删改查操作,以实现用户管理的规范化。 - **课程信息管理**:管理员可以查看并进行课程信息的...
6. **编译器开发**:学习如何开发编译器,包括编译程序的架构、错误处理、代码生成策略等,这能够让学生具备实战能力,独立完成编译器的部分或全部功能。 7. **应用扩展**:编译原理的知识不仅限于编译器的构建,还...
- **Component系统**:Actor可以包含多个Component,这种设计允许组件化地构建游戏对象,便于复用和扩展。 - **蓝prints**:一种可视化编程工具,为非程序员提供了创建游戏逻辑的途径,同时也可用于与C++代码交互...
设计阶段要考虑到系统的可扩展性、可维护性和性能要求。 4. **编码与开发**:程序员根据设计文档编写代码,实现系统的各个功能模块。这个阶段通常使用版本控制工具如Git进行代码管理,以确保代码的质量和一致性。 ...
本资源包包含了用于自学这些技术的笔记和PPT,对于初学者和进阶者都是宝贵的参考资料。 1. **Java**: Java是一种面向对象的编程语言,以其“一次编写,到处运行”的特性闻名。它具有丰富的类库,适用于各种应用领域...
SpringMVC是Spring框架的一个模块,用于构建Web应用程序。它是一个模型-视图-控制器(MVC)架构,提供了一种解耦的方式,使开发者能够...通过理论与实践相结合,你可以更好地运用SpringMVC构建高效、可维护的Web应用。
通过这些组件,开发者可以构建出高效、可扩展的Web应用程序。 【方立勋JavaWeb视频教程】 方立勋是一位知名的JavaWeb讲师,他的视频教程深入浅出地讲解了JavaWeb的基础到进阶知识。该教程可能涵盖以下几个主要部分...
同时,对于SpringBoot的微服务架构支持,也有助于开发者进入微服务领域,理解如何构建可扩展、高可用的应用系统。 在实际开发中,SpringBoot的易用性和高效性使其成为许多企业和项目的首选。开发者可以通过这份资料...
微服务强调每个服务的独立性,通过服务间松耦合的RESTful通信,实现高度可扩展和灵活的系统设计。这种架构允许使用不同的技术栈开发不同的服务,每个服务都可以独立部署和扩展,提高了系统的弹性和可维护性。然而,...
这本笔记旨在为初学者提供一个清晰的路径,了解如何利用J2EE技术构建高效、可扩展的Web应用程序。J2EE是一个标准的框架,包含了各种服务、接口和API,用于开发分布式多层应用,特别是Web应用。 【描述】:“在培训...
8. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,它整合了众多优秀框架,如Interceptor拦截器机制,提高了代码的可维护性和可扩展性。 9. **Spring**:Spring是JavaEE应用的核心框架,提供依赖注入...
Mobile IP(移动互联网协议)是一种网络通信协议,用于在移动设备改变其连接的网络...通过这些文件,开发者可以深入理解Mobile IP的架构、原理和实现细节,这对于构建能够支持移动设备在网络间无缝漫游的系统至关重要。
通过深入学习 Celery,开发者可以构建出健壮、可扩展的分布式任务处理系统。Celery 的灵活性和强大的功能使其成为 Python 开发者的首选工具之一,尤其在处理异步任务和高并发场景时。在实际项目中,结合合适的 ...
最后,"负载均衡器培训胶片V2.0.ppt"可能涉及网络服务的负载均衡技术,这对于构建高可用性和可扩展性的服务器架构至关重要。 通过学习这些资料,你可以深入理解Unix脚本编程,提升系统管理和自动化能力,同时也能...
Struts2学习笔记.docx和Struts2-Introduction.pdf将介绍Struts2的基本架构、Action、结果类型、拦截器、配置文件等关键概念。Struts2笔记.ppt则可能是对Struts2框架的实践总结,包括常见问题和解决方案。 总的来说...
使用ICE,开发者可以快速构建可扩展、高可用性的分布式系统,同时享受到其提供的强大调试工具和完善的API文档,从而提高开发效率。 总结来说,ICE是一种强大的分布式计算框架,具有与CORBA类似的接口规范,但更易于...
它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发速度并提供可扩展性。在本教程中,我们将深入探讨Yii框架的核心概念和特性。 首先,让我们从框架的基础开始。Yii提供了丰富的功能,包括缓存管理、数据库抽象...
在这个研讨会中,参与者可能学习如何设计可扩展、可维护和高效能的软件架构,这是任何软件开发项目的基础。 JavaScript,作为Web开发的主流语言,其在软件架构中的角色至关重要。研讨会可能会涵盖以下几个...