架构师才需要知道的知识:如何做容量预估和调优

为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。

1、QPS保障目标

一开始就要明确定义QPS保障目标,以此来推算所需的服务、存储资源。可根据历史同期QPS,或者平时峰值的2到3倍估算。

压测目标示例:

  • qps达到多少时,服务的负载正常,如平均响应时间、95分位响应时间、cpu使用率、内存使用率、消费延迟低于多少
  • 不要让任何一个环节成为瓶颈,需考虑服务实例、数据库、Redis、ES、Hbase等资源

2、服务注意点

2.1、服务qps上限

服务qps上限 = 工作线程数 * 1/平均单次请求处理耗时

主要关注以下几点:

(1)工作线程数,对qps起到了直接影响。

dubbo工作线程数配置举例:

<dubbo:protocol name="dubbo" threadpool="fixed" threads="1000" />

(2)cpu使用率:跟服务是I/O密集型,还是计算密集型有关。

  • I/O密集型:调用多个下游服务,本身逻辑较简单,cpu使用率不会很高,因此服务实例的个数不用很多
  • 计算密集型:本身逻辑很复杂,有较重的计算,cpu使用率可能飙升,因此可适当多部署一些服务实例

(3)网络带宽:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为 Android 架构需要掌握以下知识: 1. Android 开发基础,包括 Android 系统架构、编程语言(Java 或 Kotlin)、Android 应用组件生命周期、Android 系统基本机制和技术(如广播、服务、内容提供器、存储机制)等。 2. Android 的 UI 开发,包括设计和实现高质量、可用性和可维护性的应用界面。 3. Android 应用的性能化和试技术,包括如何利用 Android 平台工具化应用的启动时间、帧率、内存使用、电量使用等。 4. Android 应用的网络通信,包括使用 HTTP 协议访问网络数据、使用网络状态监听器处理网络可用性变化、使用网络安全机制保护数据安全等。 5. Android 多媒体技术,包括如何使用 Android 平台的多媒体 API 实现音频、视频播放、录制和编辑功能。 6. Android 应用的本地化和国际化,包括如何设计和实现应用的多语言支持、时区支持、货币支持等。 7. Android 应用的自动化测试,包括如何使用 Android 平台的测试框架(如 Espresso、Robolectric)编写单元测试、 ### 回答2: 作为一名Android架构需要具备以下知识和技能: 1. Android开发:熟悉Android平台的开发框架和API,能够独立开发和试Android应用程序。 2. 设计模式:熟悉常用的设计模式,如单例模式、观察者模式和工厂模式等,能够根据业务需求选择合适的设计模式来构建可扩展的应用架构。 3. 数据结构和算法:理解常用的数据结构和算法,能够化应用的性能和内存管理。 4. 架构设计:对于大规模Android应用而言,良好的架构设计至关重要。需要熟悉MVC、MVP、MVVM等常用的架构模式,并能够根据具体的业务需求选择合适的架构模式。 5. 性能化:能够识别和解决性能瓶颈,并化应用的性能,如减少应用的启动时间、降低内存占用等。 6. 多线程和并发编程:熟悉多线程编程和并发编程的原理和技术,能够处理复杂的并发场景。 7. 安全性和隐私保护:了解常见的安全漏洞和攻击手段,并能够设计和实施相应的安全措施,保护用户的隐私和数据安全。 8. 设计原则和规范:熟悉Android开发的最佳实践,关注代码的可读性、可维护性和可测试性,以保证代码的质量。 9. 团队协作和沟通能力:作为一名架构需要与团队成员和业务部门紧密合作,能够有效沟通和解释技术方案,协作推进项目的开发进度。 10. 持续学习和更新:技术发展迅速,作为一名架构需要不断学习新的技术和工具,保持对Android生态的熟悉,并能够持续改进和更新应用的架构。 ### 回答3: 作为一名Android架构需要掌握以下知识: 1. Android系统原理:了解Android操作系统的架构、运行机制和组件之间的交互,包括应用程序、Activity、Service、Intent等核心概念。 2. Java编程:熟练掌握Java语言和面向对象编程的基本概念和技术,包括类、对象、继承、多态等。 3. Android框架:了解Android的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的使用和生命周期,掌握Android应用程序的开发流程和相关API。 4. 设计模式:熟悉常用的设计模式(如MVC、MVP、MVVM等),能够根据需求选择合适的设计模式来组织代码结构。 5. 数据持久化:掌握Android中各种数据持久化方式,如使用SQLite数据库、文件存储、SharedPreferences等。 6. 网络编程:了解常用的网络通信协议和技术,如HTTP、TCP/IP、WebSocket等,能够进行网络请求和处理服务器返回的数据。 7. 内存管理和性能化:熟悉Android内存管理机制,能够进行内存泄漏排查和性能化,减少应用的卡顿和耗电问题。 8. 安全性和权限管理:了解Android应用的安全性要求,熟悉应用签名机制和权限管理,能够保证应用的安全性和用户数据的保护。 9. 测试和试:熟悉常用的测试工具和框架,能够进行单元测试、集成测试和UI测试,对应用进行试和化。 10. 最新技术动向:时刻关注Android领域的最新技术和发展趋势,掌握新的开发框架和工具,不断提升自己的技术水平。 综上所述,Android架构需要掌握Android系统原理、Java编程、Android框架、设计模式、数据持久化、网络编程、内存管理和性能化、安全性和权限管理、测试和试等知识,同时要不断学习新的技术和跟进最新的发展动向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值