1、技术架构介绍,红薯 (http:/ 创始人,每日访问统计数据总览,IP 10w动态请求接近 300w页面请求 80w,Ajax请求 220w高峰期并发连接数 2000,oschina 硬件配置,DELL SC 1435 (1台)CPU: 双 AMD 2G 内存: 4 * 2G + 4 * 1G硬盘: 250G * 25年前的机器,oschina 软件环境,RedHat Enterprise Linux 5.3 (x64)Sun JDK 1.6.0Nginx 0.8.xTomcat 7.x (x1)Percona Server 5.1 (MySQL衍生版),oschina 开发环境,开发工具 E
2、clipse版本控制系统 Subversion项目构建 Apache Ant,程序常规更新和发布流程,本地编码测试OK提交到SVN(SVN 位于oschina服务器上)SSH登录服务器更新代码并编译svn updatebuild.sh启动备用Tomcat1. tomcat2/bin/startup.sh2. nginx.conf - 切换到 tomcat23. killall -s HUP nginx4. tomcat1/bin/shutdown.sh,重大更新流程,挂维护说明 502.html (正在升级,hoho)停止 Tomcat Nginx 无法连接后端,直接显示 502.html数据
3、库调整、备用Tomcat进行新应用测试启动实际 Tomcat,oschina 使用的技术框架,Velocity 模板引擎Lucene 搜索引擎Ehcache JVM 缓存Dbutils 数据库工具包其他工具包:openid、图片处理、文件上传、网络工具包等这些项目是如何组合在一起呢?,MVC 和 MVA 模式,Model + View + ?MVC = ControllerMVA = Action,一个简单的MVC例子,RequestMapping(/wap/news/id.form) public String news(PathVariable(id) int id, ModelMap m
4、odelMap) modelMap.addAttribute(news, indexService.getNews(id); return wap/news; ,$news.title$news.content,Controller:,View:,Model View Action,oschina 上一个典型的MVA,Model: Msg.javaView: sendmsg.vmAction: MsgAction#send,oschina 的缓存,Ehcache ?结构:Manager - Region - Items(K/V)对象(Object)s缓存和列表(List)缓存的关系?页面片段缓
5、存Ehcache 分布式?下一步的方案?,oschina 数据库访问,Bean 类直接扩展 POJO批量加载对象,提升性能POJO#LoadList 方法,oschina 的全文搜索,Lucene + IKAnalyzer搜索结果只包含对象id,详细资料到数据库查询专门的索引创建、更新和删除任务表后台统一的进程用来对索引进行更新操作避免并发更新引起锁定问题,MISC,使用 cookie 做为登录 Token使用 Jsoup.clean() 对输入内容进行过滤 ,防止XSS所有的SQL使用动态参数,防止SQL注入URLMapping?异常邮件提醒 500,目前oschina存在的问题,JS很混乱Bean 类的逻辑复杂改为集中式缓存对系统的改造工作巨大自增长字段对数据库分布式结构的障碍,其他你感兴趣的关于oschina的技术问题?,