美文网首页
总结来一发之林老师讲解项目架构

总结来一发之林老师讲解项目架构

作者: 恐怕是小珠桃子 | 来源:发表于2016-09-29 01:08 被阅读227次

今天初次听林老师讲解项目架构,归纳了以下知识:

首先,从一个请求的发起开始分析,请求的资源分为动态和静态,像html,css,image就是静态资源。niginx是一个linux服务器,监听80端口,niginx可以自动判断uri的前缀,它可以在浏览器方改写uri,不带api的就是一个页面,带有api的niginx就会对其uri进行修改,比如下图中/api/logi会被修改为/login再发送给express.来,看大图:


Paste_Image.png

这里会涉及到跨域,那么问题来了,如果我在A域的页面发一个向B域的请求,请求的内容是要改写数据库中的数据,浏览器方看到返回“这是一个跨域请求”,问:数据是否已被修改?
答:是的,修改了!跨域取决于浏览器,浏览器会进行一跨域检查,如果端口和协议端口不符,就是跨域,不过这和服务器没有关系。

在我们的项目架构中,临时性的数据是保存在MongoDB这个轻量级的数据库中的。

那么我们要做的题是从哪里来的呢?是通过node.js程序来生成的,题和图都是生成的。题库中要做的两件事情就是生成校验。一般一个服务器跑一天也就生成大概100道题,而且这个过程是要人肉监控的,服务器随时会挂掉。

用户提交的一瞬间答案会从mongoDB进入mySQL中保存,如果超时未提交也会自动提交,问题在于不知道什么时候做这个操作,所以需要再优化~


编程题部分:图还是上面那张,凑合看啦~
每个题目应该有说明测试脚本
在我们拿到题的一瞬间,我们的题就会被保存在mongoDB里,不管未来mySOL中的题目有没有变化都和我没关系,这个地方欢迎有更好的idea~~
当我们写完一道题目时,提交github仓库地址,这个时候express拿到体质会发送请求给Jekins,这是Jekins根据提供的github地址去将代码拿下来,再拿到测试脚本对用户代码进行测试(用callback url),跑完后吧结果返回给express,express去进行比对,如果错误,将错误答案保存到MongoDB;如果正确,将之前所有答案取出,一起存入mySQL;
这个过程中我们要考虑的是:客户端如何呈现?用户怎么知道过了没有?目前的做法是用轮寻,比如,每5秒刷新一次去查看结果。
遗留两个问题:

  1. Jekins如何连接到不同的服务器上?
  2. Jekins队列是什么鬼?
    后期的话Jersey可能会分为paper和user两部分,分为不同的子域,分别连接不同的mySQL。

感觉说的有些乱?
接下来说一些老师提到过的问题:

  1. 问:Docker是什么鬼?
    答:Docker就想象成虚拟机。每个节点都是一个服务器,不是放在物理服务器上,而是都放在Docker上,用来承载不同的服务。
  2. 本期项目重点:后端部分;redux;
  3. 关于Moco:对页面来说是一个假的服务器,对后端来说是一个断言,可以充当测试。调用moco,瞬间写api。如果用moco,大家要有契约,要达成一个共识。
  4. selenium:基于web的更高级别的测试,相当于一个端对端的,黑盒测试。后面会放入另一个Jekins,持续集成。
  5. gradle: 和java的关系相当于npm和node.js
  6. flyway migrate:用来管理数据库版本,当数据库随着程序发生改变时,flyway migrate将数据库变化的脚本逐条写上去,可以迁移和回退。

关于敏捷和看板
为什么要有瀑布开发流程呢?
答:影响力目前来说还是很深的,因为瀑布出现的年代是在1970年,当时C语言才出来不久,商用的个人PC几乎没有,所以那会儿开发软件要先从操作系统开始写,然后开发语言,然后再写业务逻辑,所以需求是非常稳定的,不会发生任何变化。在当时而言是一种有效的方式,直到80年代,个人PC推出后,操作系统比较稳定,商业软件大爆发,然后就发现瀑布不合适了。

实在写不下去了,看图吧!阿西吧~


总结来一发之林老师讲解项目架构

相关文章

网友评论

      本文标题:总结来一发之林老师讲解项目架构

      本文链接:https://www.haomeiwen.com/subject/oolkyttx.html