Skip to main content Link Menu Expand (external link) Document Search Copy Copied

架构师-第一阶段:技术选型

1、创业初期,技术如何选型?

  • 选择 PHP体系 或者 Java体系
  • 早起尽快引入 DAO/ORM 技术

2、要不要自研,什么时候自研?

  • 早期不建议自研,以“快速迭代”为最高优先级
  • 控制技术栈,尽量统一技术栈,不能各个团队用不同的技术栈;除非项目需要,否则不使用不同的技术栈
  • 浅浅得封装一层,会为后期开发带来巨大好处。

例如以下代码:

String Memcache::get(String key)
String Memcache::set(String key, String value)
String Memcache::del(String key)

改为:

String CacheService::get(String key){
	String result = Memcache::get(key);
	return result;
}
String CacheService::set(String key, String value){
	String result = Memcache::set(key, value);
	return result;
}
String CacheService::del(String key){
	String result = Memcache::del(key);
	return result;
}
  • 适当造一些轮子
    • 不同技术团队,痛点是相似的
    • 开源解决不了全部个性化需求
    • 自研解决痛点,更贴合团队实际情况

3、容量设计,架构师的基本功

  • 什么情况要进行容量评估?
  • 如何进行容量评估?
    • 1、评估总访问量:(询问产品、运营)
    • 2、评估平均吞吐量:(每天按照 4w 秒算)
    • 3、评估系统高峰 qps:(80%的请求发生在 20%的时间内)
    • 4、评估单机极限 qps:(进行压力测试)
    • 5、根据线上冗余度做决策:(计算需求与线上冗余度差值)

4、伪分布式架构(多机架构),快速扩容的必备方案

  • 三大分离
    • 读写分离(数据库读写分离)
    • 动静分离(动态资源和静态资源分离,例如 css,jpg,静态页面放在单独的机器上)
    • 前台后台分离(用户系统和运营系统分离)
  • 遗留问题:
    • 耦合问题,一个子系统挂了,仍然是全站挂。如何解决?业务垂直拆分。
    • 主从延时,读写分离只能提升读写性能,无法降低库数据量
  • 架构演进:垂直拆分,解耦


萌ICP备20240168号