0%

一、业务层技术

各个互联网业务发展最终面临的问题都是类似的:业务复杂度越来越高。

  • 分:将整体复杂性分散到多个子任务或者子系统中
  • 合:将职责关联性比较强的子系统合成一个虚拟业务域

二、平台技术

1. 运维平台
1581078127(1)

  • 配置:主要负责资源的管理。例如,机器管理、IP地址管理、虚拟机管理等。
  • 部署:主要负责将系统发布到线上。例如,包管理、灰度发布管理、回滚等。
  • 监控:主要负责收集系统上线运行后的相关数据并进行监控,以便及时发现问题。
  • 应急:主要负责系统出故障后的处理。例如,停止程序、下线故障机器、切换IP等。
阅读全文 »

一、用户管理

用户管理

二、消息推送

1. IOS
iOS 的消息推送机制面世之时是一种全新的解决方案(堪称平台中的平台),应用本身不能有常驻的后台进程,系统的开销少,内存使用更少,电量也更少(把更多的运算和资源开销放在云端,非设备端)。
1581074008(1)
1581074072(1)

  • [Client App]注册消息推送;
  • [Client App]跟[APNS Service]要deviceToken, Client App接收deviceToken;
  • [Client App]将deviceToken发送给[Provider]Push服务端程序;
  • 当Push服务端程序满足发送消息条件了,[Provider]向[APNS Service]发送消息;
  • [APNS Service]将消息发送给[Client App].
阅读全文 »

互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。

一、单点登录SSO(Single Sign On)

说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。

  • cookie
    用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。
阅读全文 »

单个系统的高可用和高性能并不等于整体业务的高可用和高性能,互联网业务的高性能和高可用需要从更高的角度去设计,这个高点就是“网络”。这里的网络强调的是站在网络层的角度整体设计架构,而不是某个具体网络的搭建。

负载均衡就是将请求均衡地分配到多个系统上。使用负载均衡的原因也很简单:每个系统的处理能力是有限的,为了应对大容量的访问,必须使用多个系统。

阅读全文 »

服务层的主要目标其实就是为了降低系统间相互关联的复杂度。

一、配置中心

在系统中,将数据库配置写在代码中,使得数据与代码耦合性太高,使得每次改代码,都要重新打包;将配置信息放配置文件中,使得数据与代码耦合性降低;随着并发量增大,需要扩充服务器,使得每个服务器都要进行数据库配置、部署;若再修改此配置,工作量非常大,还可能因为时间造成不一致情况。所以要将配置文件放在配置中心统一管理。
具体做法:

阅读全文 »

一、开发框架

对于框架的选择,有一个总的原则:优选成熟的框架,避免盲目追逐新技术!

  • 成熟的框架资料文档齐备,各种坑基本上都有人踩过了,遇到问题很容易通过搜索来解决。

  • 成熟的框架受众更广,招聘时更加容易招到合适的人才。

  • 成熟的框架更加稳定,不会出现大的变动,适合长期发展。

二、Web服务器

开发框架只是负责完成业务功能的开发,真正能够运行起来给用户提供服务,还需要服务器配合。
选择一个服务器主要和开发语言相关,例如,Java的有Tomcat、JBoss、Resin等,PHP/Python的用Nginx,当然最保险的就是用Apache了。

阅读全文 »

一、SQL

数据库中间件

二、NoSQL(not only SQL)

首先NoSQL在数据结构上与传统的SQL的不同,例如典型的Memcache的key-value结构、Redis的复杂数据结构、MongoDB的文档数据结构;其次,NoSQL无一例外地都会将性能作为自己的一大卖点。NoSQL的这两个特点很好地弥补了关系数据库的不足,因此在互联网行业NoSQL的应用基本上是基础要求。

阅读全文 »

一般用MySql、PostgreSQL这类开源数据库,存在的问题就是性能差较低。为了提高性能,要对数据库进行拆分。

一、垂直拆分

将一个数据库中表,根据功能不同,拆分成多个数据库。

1581000248(1)
拆分使得单个请求的响应时间增加,但整个服务的吞吐量增加

二、读写分离(实现了读能力扩展)

1581000509(1)
用户查询的时间,要比写数据库的时间要多。所以一个master数据库用于写,多个slave用于读。slave节点的数据可以理解为master节点数据的全量备份。
1581000723(1)
对开发而言

阅读全文 »

首先说明一点的是:专注于某种编程语言或工具可能限制你的发挥,尤其可能限制了你在工作中可提供的价值。

注:如果你可提供的价值在逐步退化,那么你的舞台可能突然谢幕。

下面我要说说这些限制体现在哪些方面,你应该如何去避免它

在2008年的时候,就已经参与到自动化测试项目中,至今已过10年了,在这10年里见尽了各种工具的突起、消失。

阅读全文 »