创业互联网公司如何搭建自己的技术框架

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
简介: 适用范围 本文主要针对小型互联网公司,特别适用于手机APP的后台架构,基本可以支撑5万日活 本文会对可能用到的相关技术进行技术选型的说明,以及相对应的设备的采购。 技术指标 说一下一些技术指标的计算过程可以作为其他同学的参考 QPS, 如果是5万日活,使用集中在每天的4小时,每个

适用范围

本文主要针对小型互联网公司,特别适用于手机APP的后台架构,基本可以支撑5万日活
本文会对可能用到的相关技术进行技术选型的说明,以及相对应的设备的采购。

技术指标

说一下一些技术指标的计算过程可以作为其他同学的参考
  • QPS, 如果是5万日活,使用集中在每天的4小时,每个用户大概产生100的请求,那么平均下来,我们系统大概应该支撑的请求为:50000 100 / (4 60 * 60) = 350 qps/s
  • 业务数据 业务量,我们自己是新闻业务,可能会有其他的业务,比如游戏,商城等等,基本每天新增的业务数据都会在同一个量级, 每日10000, 另外跟用户相关的信息也是比较大的一块,比如用户的订阅等行为,一共5万的用户,保存相关信息可能大概需要100条的数据。
  • 缓存大小 主要业务数据和用户相关的热点数据限时保存在缓存中, 大概需要5个G左右。
  • 日志大小 用户日志和请求日志。 大概每天3个G左右

技术架构

N_X_WQV20_4SF61NZUYO
整体架构因为是小公司,我们基于阿里云来搭建,对图中的内容和技术选型进行一下说明:

负载均衡

 可选方案: SLB, Nginx.
 - SLB要收钱,但是比较便宜,有保证,不会挂。 但是可配置的很少,不能根据域名做ip映射
 - Nginx, 没啥缺点,需要一定的知识。
建议: SLB + Nginx, SLB绑定域名作为统一的入口,然后每个服务器上再搭建Nginx.

CDN

用于缓存静态文件等等。 七牛和阿里的都还可以。
- 七牛要做的久一点, 各种图片处理的接口要完善一些
- 阿里的CDN要稍微好一点点, 但是没有不安全的访问方式,访问稍微没有那么灵活。 图片处理功能弱一点。

分布式调用框架

目前可选的有ZK + dubbo. ZK + Motan, ZK + dubbox, edas。

  • dubbo, 阿里的服务治理框架,已经不维护了,切换反应有点慢
  • dubboX, 当当基于dubbo搞的,还在维护可以一用,推荐。
  • Motan, 微博的服务治理矿建, 刚开源,需要学习一下, 推荐。
  • Edas, 阿里云服务,要收钱,侵入型很强,不推荐

MQ

可选的有: ActiveMQ, 阿里云消息, robbitMQ,
各有好处, 但是考虑到运维的难度,推荐阿里云消息。

Redis

用来做缓存, 自建成本有点高,需要Codis, 分片,集群,主从等等,很麻烦。 建议直接用阿里的

数据库

主要基于读写分离和主从复制考虑,目前可以自建和选用阿里的DRDS。
- DRDS 要花钱,成本较高,没有必要
- 自建,  不用中间件,直接1写2只读, 然后配置读写分离的数据源,内网SLB进行读集群。解决之。

搜索

建议ELK, 可以自动同步数据库,除了搜索引擎的功能外,还可以做日志搜索,监控系统。

一些典型的业务场景说明

  • 把业务底层做成SOA模块,通过分布式调用框架对外提供服务。
  • 单独做一个小的系统来运行定时任务
  • 热点数据放缓存,然后通过MQ来更新缓存
  • 日志等数据有必要可以考虑上个Mongo
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 自然语言处理 API
通义万相AIGC技术Web服务体验评测
随着人工智能技术的不断进步,图像生成技术已成为创意产业的一大助力。通义万相AIGC技术,作为阿里云推出的一项先进技术,旨在通过文本到图像、涂鸦转换、人像风格重塑及人物写真创建等功能,加速艺术家和设计师的创作流程。本文将详细评测这一技术的实际应用体验。
426 4
|
Java API
java 对象list 使用stream进行过滤
在Java中,你可以使用Stream API对对象列表进行过滤。假设你有一个`List<MyObject>`,并且你想根据某些条件过滤出特定的对象。以下是一个示例: ```java import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<MyObject> myObjects = ... // 初始化你的对象列表 List<MyObject> filter
538 1
|
存储 前端开发 数据管理
为LTO磁带而生的文件系统LTFS|主线任务—夺回"秋雅"
在LTO第一代到第四代,如果我们想要访问LTO磁带的内容,都需要厂商提供的特殊软件来支持,软件需要全部加在整个磁带的内容,才能展示你要查找的文件,保存文件的过程也需要特有的软件来处理。提供的磁带存储的厂商还有多个这就导致用户在使用磁带过程中,非常的痛苦地面对来回之间复杂的搬运场景。
|
存储 Linux 索引
3.14 深度剖析Linux硬链接和软链接,直击它们的本质!
建立硬链接和软链接非常简单,那这两种链接有什么区别?它们都有什么作用?这才是链接文件最不容易理解的地方,我们分别来讲讲。
715 0
3.14 深度剖析Linux硬链接和软链接,直击它们的本质!
|
XML JSON Android开发
[Android]网络框架之Retrofit(kotlin)
[Android]网络框架之Retrofit(kotlin)
561 0
|
数据采集 存储 安全
爬虫框架Playwright在Java环境下的开发实践
爬虫框架Playwright在Java环境下的开发实践
521 0
|
Kubernetes Cloud Native 安全
Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架
经过社区多位成员的贡献,Koordinator 0.6 版本正式发布。相较于上一个版本 0.5,新版本进一步完善了 CPU 精细化编排能力,更好的兼容原生用法;支持了资源预留的能力(Reservation),补齐了调度原子语意缺失;发布了全新的重调度框架,支持用户灵活的扩展自定义插件。这些特性源自于阿里巴巴内部的生产实践,并结合上游社区规划思考,为用户带来标准、强大、灵活的调度解决方案。
1222 0
Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架
|
Cloud Native 程序员 Go
《阿里开发者手册-Golang专题》电子版地址
本期以 Go 语言为主题,收纳阿里巴巴资深程序员语青、丛霄、蜂翅、赋行、路德、冀锋 6 位的优秀技术文章。精解 Go 语言开发应用、常见技术难点以及产品创新实践等,帮助更多开发者快速掌握 Go 语言核心架构及功能,高效解决问题,提升研发效率,在云原生的浪潮下扬帆起航!
183 0
《阿里开发者手册-Golang专题》电子版地址
|
程序员 C++ Windows
Notepad++|源代码编辑器
Notepad++|源代码编辑器
776 0