前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >app后台技术

app后台技术

作者头像
PM吃瓜
发布2019-08-12 17:28:05
9230
发布2019-08-12 17:28:05
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

首先应用程序框架,随你自己业务需求而定,可以选择SSH或者SSM,或者看自己业务量大小。

其次,并发量不是应用程序可以控制的,而是服务器架构。

你要先估算自己的应用的最高并发量,还有访问频率,总用户量等等。

一般来说,基本的服务器架构应该是Nginx(可考虑双击或集群)+ Tomcat(集群) + Redis/Memcached(集群) + 缓冲队列 + MySQL(读写分离或集群)

Nginx:高性能的反向代理和负载均衡,比Apache好一些,主要作用是做动静分离(例如广告等静态图片或者页面),还有是负载均衡、分流的作用,具体怎么均衡,查阅相关资料,有好几种方式,有基于IP的hash,基于URL的hash等等

Tomcat:Java的Web应用程序都是部署在Tomcat上(默认配置500连接),至于Web程序开发可以SSH或者SSM框架,自己选择。Tomcat最好是集群,而且每个Web应用模块双部署,即使一个服务器上的Web应用不能访问时,要立马切换到正常的那台(可以Nginx实现)。然后这部分应该考虑的问题,就是session会话共享,要把session在各台服务器之间同步或者共享到同一地方。个人倾向于后者,因为后者可以用缓存服务器来代替,来存储session信息。即下面讲的Redis/Memcached。

Redis/Memcahed:因为Web应用80%的数据都是读,20%为写。即2、8定律,所以缓存是必须的。如果没有缓存,数据库的承受压力太大,会导致高峰时,拒绝连接。因为缓存用的是内存,所以读取操作数据,会更快。按照Redis的官方测试结果,读性能可达将近10W(具体忘记了)。而Redis/Memcached都是缓存服务器,哪一个较好呢。前几年时,是memcached比较流行,而最近几年Redis火了之后,因为它的高性能,可持久化,支持多种数据结构等优势,为更多人所采用。

MySQL:这里也可以选用其它更好的数据库,如商业级的oracle。数据库可支持的连接数并不是很多,Mysql默认配置为100条连接,其中还有1条保留给root用的。所以最多同时99条连接,当然配置是可以改的,但不会太高。所以数据库要根据业务需求,做读写分离,或者集群,或者两者都有。但是备份一定要有的,热备份和冷备份建议都要有。前面说了,采用Redis/Memcached缓存可以有效的降低数据库的压力,如果这时还不能满足,那可以选择加一个缓冲队列,把操作写入队列中,再从队列中慢慢读取,慢慢插入数据库。常见队列为Redis,ActivaMq,rabbitmq等等

最后,上面都是理论知识,如果真要实践起来,每一项都要花费一段时间去研究,而且还要根据自己的需求做调整,优化之类的。最后说明一点,能简单就别复杂化,越复杂化考虑的东西就越多。

例如数据库我一台就够用了,就不要做读写分离,因为读写分离会导致数据不一致,不及时同步之类的问题。所以,能用简单的方案,就用简单方案。


框架设计

业务层次模型划分

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档