前端

  • 使用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开发的认识的更多相关文章

  1. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  2. Go web开发初探

    2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...

  3. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  4. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  5. web 开发自动化grunt

    现在web开发自动化已很流行,如何进行压缩文件,如何进行测试js是否正确,如何进行 检测html文件是否规范等等都可以通过web自动化技术进行实现,只要打一个命令即可. 本文主要是通过grunt进行实 ...

  6. eclipse SE增加Web开发插件

    最近接触了些java项目,之前安装了eclipse SE版本.没有Web开发插件,调试不了Web代码.点击“Window”--“Preference” 左边菜单栏是找不到“Server”项来配置服务器 ...

  7. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  8. 12款简化 Web 开发的 JavaScript 开发框架

    前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...

  9. Golang Web开发时前端出现谜之空白换行的坑

    在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部 ...

  10. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

随机推荐

  1. kibana显示报错

    "status": 500,            "reason": "ElasticsearchException[org.elasticsear ...

  2. 设置 debug 版本签名与生产版本一致

    debug 版本使用生产版本的签名 在开发过程中,app 直接跑到手机上,用的签名文件是 Android Studio 默认的自动生成的一个签名,与生产版本的 app 签名是不一样的.当接入华为推送的 ...

  3. 【Unity】8.5 扩展编辑器

    分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 可以通过编辑器窗口 (Editor Windows) 创建自己在 Unity 中的自定义设计工具.来自EditorWin ...

  4. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。

    问题:HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 ...

  5. (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦

    引言: 在使用 Unity3d 开发微端.或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼 ...

  6. 笔记 Hadoop

    今天有缘看到董西成写的<Hadoop技术内幕:深入解析MapReduce架构设计与实现原理>,翻了翻觉得是很有趣的而且把hadoop讲得很清晰书,就花了一下午的时间大致拜读了一下(仅浏览了 ...

  7. FFmpeg(10)-利用FFmpeg进行视频像素格式和尺寸的转换(sws_getCachedContext(), sws_scale())

    一.包含头文件和库文件 像素格式的相关函数包含在 libswscale.so 库中,CMakeLists需要做下列改动: # swscale add_library(swscale SHARED IM ...

  8. Debugging the Java HotSpot VM

    Open Heart Surgery: Analyzing and Debugging the Java HotSpot VM at the OS Level https://www.youtube. ...

  9. 深入理解Java中的逃逸分析

    在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件.第二段编译是把.class转换成机器指令的过程. ...

  10. 微信JSAPI 公众号支付 H5支付以及APP支付 WEBAPI接口开发测试

    统一下单入口 调用该方法入口: public void WxPayAPI() { //string PayPrice ="99.9"; ////订单号 //string Payor ...