我对Web开发的认识
前端
- 使用mvvm框架,每个视图维护自己的数据模型,更专注于视图模型及状态,在框架的帮助下规范视图与后端的交互及减轻工作量
我的选择是avalon.js
- 解耦前后端开发
- 自有资源独立管理,向后端开放资源使用的接口
- 拿到后端静态资源标识后,按照约定独立运算获得资源URL,不需要后端参与
后端
业务入口
- 任意语言的web开发框架都可以
- 主要任务是把HTTPRequest转换为RequestContext
- 对RequestContext做基本的验证,如有效性、入口权限等
- 按照HTTP接口约定,调用相应的服务并返回Response
服务
- 爬虫服务使用Python,开发简单、相关类库丰富、可跨平台部署
- 搜索服务使用Java,目前在这块还没有实践经验,看好ElasticSearch
- 图片服务,任意带丰富图片处理类库的语言都可以
- 接口约定应该允许客户端用参数指定返回的图片的长宽
- 接口需要直接对外公开
- 邮件服务
业务入口及服务都应该做到可容易水平扩展,甚至分布式
数据库
方案一
- 关系数据库选择postgresql
- 应对复杂查询的能力比mysql强
- 对json数据有很好的支持,可以省掉用来保存无结构key-value数据的nosql数据库
- 对地理数据有很好的支持
- 自带优秀的读scalability
- 写scalability有postgresql-xl
- pg vs mysql
- redis做缓存
方案二
- 任意对事务支持良好、可多线程访问的关系数据库
- 需要考虑读、写scalability
- redis用作nosql,主要处理key-value数据
- redis用作缓存
高并发读不是什么大问题,缓存+数据库集群能很好的解决。难点在于用数据库集群应付高并发写的同时需要保证ACID。
反向代理
毫无疑问是nginx
运维
运维也是重要的需求方
目标
- 掌握资源使用情况
- 限制应用可接触的资源
- 资源总量能迅速扩张
- 任何操作都能回滚(time machine机制)
- 任何操作都有历史记录
- 任何数据和操作都可视化
策略
- 限制应用的访问权限
- 自身所在目录
- 以环境变量指定的目录,如APP_LOG_HOME、APP_DATA_HOME、APP_UPLOAD_HOME
- 有必要的话用特定账户运行该应用
- 应用日志格式须由运维指定,既要人类可读,又要方便代码解析
日志记录应该是非阻塞的
- 监控应用进程占用的系统资源
我对Web开发的认识的更多相关文章
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Go web开发初探
2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- web 开发自动化grunt
现在web开发自动化已很流行,如何进行压缩文件,如何进行测试js是否正确,如何进行 检测html文件是否规范等等都可以通过web自动化技术进行实现,只要打一个命令即可. 本文主要是通过grunt进行实 ...
- eclipse SE增加Web开发插件
最近接触了些java项目,之前安装了eclipse SE版本.没有Web开发插件,调试不了Web代码.点击“Window”--“Preference” 左边菜单栏是找不到“Server”项来配置服务器 ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 12款简化 Web 开发的 JavaScript 开发框架
前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...
- Golang Web开发时前端出现谜之空白换行的坑
在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部 ...
- 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法
本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...
随机推荐
- php分享十六:php读取大文件总结
一:file函数读取 file()函数的效率很底下 如果是有规律的文件.比如每行一条相应数据.那么尽量不要是用file()函数,可以使用file_get_contents()然后用explode切割. ...
- [na]数据链路层&网络层协议小结截图版
ip层:分组选路 tcp:端到端的通信 中间系统没必要有应用程序,分组选路即可 应用程序中隐藏所有的物理细节. 语音肯定用udp linux主版本 次版本号 修订号 次版本为偶数说明是稳定版.奇数是开 ...
- 【Unity】8.3 布局模式(GUILayout)
分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 在Unity 5.x中,GUI控件的布局方式有两种. 一种为固定布局,即在绘制控件的时候将位置参数传入,指定控件的精确位 ...
- 获取IOS屏幕尺寸大小
转自:http://www.open-open.com/lib/view/open1395752090322.html 1.app尺寸,去掉状态栏 CGRect r = [ UIScreen main ...
- Android 两个界面间快速切换时,会发现有短暂黑屏
这种问题一般是因为一个Activity启动之后在显示视图之间时间太长导致的. 1.优化方式可以通过精简layout文件.多线程处理数据载入等. 2.但是有些Activity的layout文件可能比较大 ...
- Python Socket网络编程详解
Socket 简介 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. s ...
- (原创)用c++11实现简洁的ScopeGuard
ScopeGuard的作用是确保资源面对异常时总能被成功释放,就算没有正常返回.惯用法让我们在构造函数里获取资源,当因为异常或者正常作用域结束,那么在析构函数里释放资源.总是能释放资源.如果没有异常抛 ...
- ubuntu下安装与卸载软件方法
http://www.cnblogs.com/JamyWong/archive/2009/11/19/1606442.html 1.通过deb包安装的情况:安装.deb包:代码:sudo dpkg - ...
- 一句命令激活windows/office
激活windows 服务器地址:kms.03k.org (点击检测KMS服务器是否正常) 更新: 脚本维护更新:2016-11-02 服务端版本:2017-06-17 (1111) 有疑问可以戳QQ群 ...
- replace()的使用方法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 数字类型的必须转换成字符串才能使用replace,否则会报错