如何基于阿里云搭建适合初创企业的轻量级架构?

摘要: 在项目的初期往往存在很多变数,业务逻辑时刻在变,而且还要保证快速及时,所以,一个灵活多变、快速部署、持续集成并可以适应多种情况的架构便显得尤为重要。本文主要介绍基于阿里云搭建适合项目初期的后端架构

----基于阿里云搭建的适合初创企业的轻量级架构

前言
在项目的初期往往存在很多变数,业务逻辑时刻在变,而且还要保证快速及时,所以,一个灵活多变、快速部署、持续集成并可以适应多种情况的架构便显得尤为重要。本文主要介绍基于阿里云搭建适合项目初期的后端架构,至于细节操作不作描述,比如nginx配置优化、linux内核优化、防火墙配置、ansible的使用等。

项目背景
项目的组成: 两个IOS客户端,一个微信端,一个管理系统,智能硬件。

项目初期的运维架构
总体架构
项目后端架构使用阿里云服务搭建,其中RDS为主从集群,并配备灾备实例。ECS可根据业务量动态弹性伸缩,其余服务均采用单实例的方式远程调用。

VPC
搭建VPC的原因有以下几点:

可以将业务数据库和业务服务器放置在可以自己掌握的同一内网,可以提高一些安全性。
内网访问,稳定而且速度快。
阿里云服务之间通过内网访问的流量是不收费的。所以在选购服务时,带宽可以选择流量版,这样在保证带宽速率的同时,还可以极大的减少运维费用。
举个例子:同样一台ECS,在同为百兆带宽的情况下,每月的费用如下图:

当然,能这样的做的原因也是因为在这个架构中,ECS仅处理业务逻辑,几乎不存储文件资源。大部分静态资源,如视频图片等,都是存储在OSS上。如果存放静态资源,比如下视频或图片什么的,流量一多那就很亏了。

业务数据层
RDS
项目一开始,RDS选购的是共享型单实例的,随着业务量的提升,可以多区域部署只读实例。另外,保险起见,主实例可以配有一个灾备实例,防止意外发生。

Redis
阿里云的这个Redis,一开始我用的时候比较早,那个时候还不支持主从的,只能单实例,所以主要用它做数据缓存,响应速度非常快。而且,因为是放置在内网的且只能内网访问,所以安全性也很高。

目前阿里云redis已经可以支持主从集群,使用它实现一些业务场景也是个很不错的选择。比如有序集合可以用来做数据权重分析后的数据排序,哈希表可以用来存储具有简单映射关系的字典表,还有消息队列,消息订阅等等其它场景都可以使用redis实现,并进行持久化存储。

MongoDB
结构型数据,主要存储档案式的数据,比如每个用户的操作行为,以档案式记录并进行统计分析,方便下一阶段的项目做个性化服务。另外一些关联复杂的数据,也可以用MongoDb存储,可以提高访问速度。还有,一些对软件应用版本比较敏感的数据也可以存在MongoDB中,比如a版本拿到A数据,b版本拿到B数据,而这个AB数据都是由很多关联关系复杂的数据所组成,如果把这些数据根据版本号存储在不同的MongoDB档案中,需要时,直接根据版本号拿就可以了,这样就避免了很多的mysql查询。

静态资源
OSS + CDN
OSS存储静态资源,CDN(内容分发网络)可以加速静态资源的下载速度。至于资源链接地址,客户端可以通过接口访问从后端业务数据库中拿到。
服务器安全
运维层面
选购了阿里云的web防火墙和态势感知的服务。这两个服务可以实时监控服务器状态,识别并跟踪***来源和类型,可以说,用这两个工具也节省了很多人力成本。
配置firewalld。
业务层面
针对接口访问的安全性,主要做了以下工作

  1. 签名验证:防止伪造请求
  2. 访问频次限制:计数器是用phpredis制作的毫秒级计数器
  3. https访问
  4. 部分敏感数据,使用RSA非对称加密
    服务器集群
    主ECS
    通过这台ECS,可以管理其它从属的ECS,并查看状态。安装的主要工具为ansible。
    如果不需要用这台ECS来做负载均衡的话,可以配置白名单连接,只允许管理员ip才能访问。

从属ECS
这类ECS服务器只存放逻辑代码,所以当需求量增加时,只需增加此类服务器的个数即可。而且,在增加个数时,可以使用之前制作好的镜像,创建多台相同环境的ECS服务器。每台ECS的web环境为nginx1.10和php7,微服务容器环境用的docker。

负载均衡
负载均衡可以采用两种方式

1.购买阿里云的负载均衡实例(注意要买带公网ip的)。
由该负载均衡实例接收请求后,会分发到内部服务器。
2.在某台具有外网ip的ECS上使用nginx部署负载均衡服务。

个人更倾向第一种,毕竟管理起来比较方便,节省人力。
使用到的第三方服务
Coding
后端的所有代码都是放在Coding上的,喜欢Coding的原因有三个。
1.私有git仓库当时没有个数限制,虽然现在有限制了,但是费用不贵。
2.有ios客户端且比较好用。
3.操作界面好看。
后端代码的自动部署是通过Coding的webhook实现的,具体操作可以去看这篇博客《利用Coding的webhook自动部署项目》。使用其它代码托管平台也有基于git的webhook功能,操作方式大致相同。

实现的场景:代码的自动部署与持续集成。
当我提交代码到开发分支上时,测试服务器上会自动更新开发分支上的代码。
当我把开发代码合并到主分支上时,正式服务器会自动拉取master分支上的代码,可谓是方便快捷。
jenkins 之类的工具虽然也尝试过,但是感觉部署起来很不方便,不够定制化,而且还消耗了一部分服务器资源。
容联·云通讯
主要用来实现短信通知、验证码等功能
融云IM
主要用来实现ios客户端之间的即时通讯以及客户端的应用消息推送。
后端逻辑层架构
项目起初的接口是基于phalapi框架开发,之后逐步过渡到基于laravel5.3开发,感觉还是不够灵活,与项目属性有些不符,后来又转到thinkphp5框架,但在使用中发现了一些问题,虽然提交了pr,但是响应速度无法达到公司项目的迭代速度,于是就重写的框架核心,并开发了一个支持多应用后端场景的后端开源项目。框架核心保留大部分thinkphp5优秀特性的同时,又加入一些thinkphp5本身没有的元素,且修改了很多代码问题。

github: https://github.com/AxiosCros/tpr-cms

项目主要集成了以下服务
workman : 实现长连接场景
gearman : 实现异步处理,及CGI到CLI模式切换
rabbitMq :实现消息队列场景,解耦生产者与消费者

还有其它服务的SDK重制版,如aliyun-sdk,Umeng、RongIM等
以及一些项目中常用的工具
如何根据业务量提高性能
http请求的并发性能可以通过增加ECS实现,针对部分耗时较长且无须即时回调的请求,可以用gearman异步处理。
数据库的并发连接数可以通过增加配置来提高,也可以通过创建只读实例进行读写分离,提高数据处理能力。再往后,可能需要搭建hadoop管理数据库集群,不过等用上hadoop的时候,应该已经不是项目初期了,至少数据量得是TB级的了。
其它还可以采用优化nginx配置,优化linux内核,采用高速固态硬盘等等的手段。
总结评价
这套架构基本上可以完全满足项目初期的业务需要,而且所有的云服务费用总和也非常少(相比于自建服务器机房)。随着业务量的提升,可以逐步升级配置或者平行扩展以应对需求,可以在短时间内临时性的提高并发处理能力。总结起来就是省钱、省时、省力气。

原文地址:http://blog.51cto.com/14031893/2323625

时间: 2024-10-11 18:37:26

如何基于阿里云搭建适合初创企业的轻量级架构?的相关文章

基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

摘要: 数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台. 本次分享嘉宾是来自阿里云大数据的技术专家祎休 背景与总体思路 数据仓库是一个面向主题的.集成的.非易失的.反映历史变化的数据集合用于支持管理决策. 原文链接:http://click.aliyun.com/m/43803/ 数加大数据直播系列课程,主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主

基于阿里云Ubuntu14.04 64bit部署WordPress博客系统

环境:基于阿里云Ubuntu14.04  64bit服务器系统 1, 安装apache2+mysql5+php5+php5-mysql sudo apt-get install apache2 sudo apt-get install php5 sudo apt-get install mysql-server sudo apt-get install php5-mysql sudo /etc/init.d/apache2 restart 至此重启了apache后应该就已经配置好服务器了,对此先

基于阿里云ECS的phpwind网站备案前如何远程访问调试?

基于阿里云ECS的phpwind网站部署非常方便,但云主机的外网IP绑定域名却比较复杂.先要申请域名,成功后还需要备案.尤其是企业网站备案,需要提交的资料较多,准备资料以及审批的时间较长.这段时间在外网采用IP访问是不行的,显示的是主机宝服务器默认页. 即使域名已经绑定成功,但若未备案的话,采用域名访问也会出现以下“温馨提示”: 那么有没有办法在网站备案批准之前就能远程访问,以便尽早调试?经过摸索,基于阿里云ECS的phpwind网站可以采用以下步骤,在网站域名备案前修改默认的80端口以便使用I

阿里云自研新一代企业云数据库POLARDB背后的技术

摘要: 从2008年到2018年,阿里巴巴的数据库技术已经发展了10年的时间,10年的时间从AliSQL到RDS,再到自研POLARDB,阿里巴巴数据库技术得到了极大的提升.那么在阿里云自研新一代企业云数据库POLARDB背后有哪些技术呢?本文中,阿里云数据库事业部总经理鸣嵩就为大家进行分享. 从2008年到2018年,阿里巴巴的数据库技术已经发展了10年的时间,10年的时间从AliSQL到RDS,再到自研POLARDB,阿里巴巴数据库技术得到了极大的提升.那么在阿里云自研新一代企业云数据库PO

阿里云搭建VPN

目标: 主机A有外网权限.内网权限: 主机B只有内网权限. 希望在主机A上能搭VPN,作为跳板机器,在本地主机能够直接访问主机B. 尝试1: 在主机A上搭pptpd. 尝试了两天,搜索无数,无论如何访问不了主机B.怀疑阿里云做了限制,检查Mac和IP是否相符 尝试2: 在主机B上搭建OpenVPN.搞定! 参见:http://docs.linuxtone.org/ebooks/VPN/openvpn%E9%9B%86%E5%90%88.pdf 写的相当详细 在Mac上配客户端的过程: 1.安装T

在基于阿里云服务器CentOS6.5下安装Subversion 1.6.5服务

最近阿里云搞了个1元免费提供云服务器的活动,偶心痒痒就申请了一个. 正好可以作为团队的SVN服务器了,下面就来部署SVN服务吧. 一.安装基础环境 apr-1.5.0.tar.gz apr-util-1.5.3.tar.gz pcre-8.35.tar.gz zlib-1.2.8.tar.gz subversion-1.5.6.tar.gz tar -xzvf apr-1.5.0.tar.gz cd apr-1.5.0 ./configure --prefix=/usr/local/apr ma

(二)基于阿里云的MQTT远程控制(购买阿里云,在云端安装MQTT,测试MQTT远程通信)

QQ名称为Friday~的网友把他自己买MQTT的过程截图发给了我,今天就说一下如何购买阿里云,安装MQTT可以参考 http://www.cnblogs.com/yangfengwu/p/7764667.html https://blog.csdn.net/frankcheng5143/article/details/52045501 如果有什么问题可以在上面的群里面向他请教 基于阿里云的远程控制,其实就是在云端安装服务器,然后我们的WiFi设备和手机都去连接云端服务器(云端服务器就相当于云端

云上拍客梨视频 基于阿里云的技术实践分享

摘要: 梨视频大部分的业务都选择了阿里云,其中一个主要原因是阿里云提供基于钉钉群构建的24贴身技术支持,刘隽表示,这种服务模式可以更充分.高效的对接需求,快速得到反馈,这也让梨视频的同学有信心去尝试一些新的方案. 在上海云栖大会视频专场中,梨视频CTO刘隽先生分享了梨视频拍客生产全流程及其背后的技术,同时作为业务使用方,向现场嘉宾阿里云产品的使用实践. 云上拍客梨视频 梨视频是全球第一资讯短视频内容生产和消费平台,拥有5万名全球核心拍客,遍布全球七大洲,覆盖525个国际主要城市和2000多个国内

菜鸟如何使用阿里云搭建服务器网站【阿里云、宝塔、thinkPHP、PHPstrom、Linux】②

我们的流程: ①在阿里云免费领取一个月的服务器,推荐使用支付宝账号登录.因为这样你就可以免除实名认证这个环节了. ②配置我们服务器的系统,其实云服务器也就是一个虚拟机,想要运行还是需要一个操作系统的.这里推荐使用LInux[稳定可靠.故障率非常低.几乎不会被病毒和恶意代码感染和破坏.运行速度非常快]. ③配置网站的运行环境,运行环境有几种LNMP.LAMP.WAMP--,这些字母L:Linux.W:win.A:Apache.N:NGINX.M:MySQL.P:PHP.我们这次配置的环境是LNMP