发表于: 2017-09-26 22:22:00
1 757
一.今天完成的主要事情
1.准备了小课堂相关的知识点
23.域名和端口号是怎么对应起来的?应该通过域名访问吗,从域名服务商到服务器的流程是怎么样的?
1. 域名和端口号是怎么对应起来的?
首先,客户端输入域名,通过DNS服务器将域名解析成为服务器ip,找到nginx服务器,浏览器的请求默认访问的都是80端口,然后再通过nginx服务器将请求转发到不同的服务器以及端口中.
这样,在客户端看来,就好像是域名和不同的端口号对应起来
2.应该通过域名访问吗?
应该.想象一下如果不通过域名访问的情况是什么?
首先,非常难记,域名是对人友好而ip都是4组基本无规律的数字,对人不友好.
其次,不安全,通过ip直接访问服务器是非常危险的,相当于将整个服务器的大门向所有人打开,造成的后果是别有用心的人非常容易的就攻击到服务器.现在就有一些网站设置不允许通过ip直接访问本服务器.
通过域名访问,会先经过负载转发服务器转发,这样负载转发服务器就起到了护城河的作用,如果有人恶意攻击,那么也要先攻破请求转发服务器,而该服务器一般是没有太多资源的,所以损失也相对较小,通俗点说,就是起到了肉盾的作用.
最后,如果是用ip访问服务器,如果服务器中的资源发生迁移,那么原先的服务器ip地址就无效了,必须要重新使用新的ip地址访问服务器,但是如果是使用域名则不存在这个问题.
3.从域名服务商到服务器的流程是怎么样的?
Dig +trace 域名 命令
首先,将输入的域名包装为真正的域名,如www.baidu.com包装为http://www.baidu.com.
然后去查询根服务器,通过根服务器查找到顶级域名服务器,再通过顶级域名查询到次级域名服务器,最后通过次级域名服务器查找到该主机的ip地址.
2.针对昨天的比较困难的问题,寻求解决方案
(1).计算收益的时间规则:更新/新增tbl_user_product时起息日期如何计算?(核心:如何判断当天是否是工作日)
解决方案:调用第三方API,将日期传入接口,判断该日期是否为工作日,demo如下:
demo执行结果是:
{"success":"1","result":{"date":"2017-09-30","workmk":"1","worknm":"工作日","week_1":"6","week_2":"星期六","week_3":"周六","week_4":"Saturday","remark":"中秋节、国庆节:10月1日至8日放假调休,共8天。9月30日(星期六)上班。"}}
Process finished with exit code 0
实际项目中要用的还需要进一步重构
(2).每一步操作失败和异常的处理
解决方案:
首先部署多个service备用,如果一个挂掉,立即使用另一个,尽量确保不会出错.
其次,如果是多个service同时挂掉,对于一些比较重要的,确保要成功的操作,比如用户付款,在调用第三方支付接口之后,根据返回的状态码执行对数据库的相应操作.将对数据库的操作封装在定时任务中,如果操作成功,直接退出定时任务,如果操作失败,则记录日志,调用短信接口给管理员发短信,同时在一段时间(定时任务中设置)后继续执行要做的操作,直到成功为止.
(3).债权匹配规则的具体实现
解决方案:金额和时间分别有三种情况,(金额相等,金额不足,金额超出,时间相等,时间超出,时间不足),综合就一共有九种情况,每种情况又有不同的排序规则,那么实现就可以用三个sql先找出三个list,然后在代码种将三个list再细分为三个list,接着根据规则对每个list排序,最后9个排序好的list组合在一起就是按照匹配规则排序好的数据
3.最终梳理出几个解决不了的问题
(1).调用支付接口之后的结果是实时返回还是延时返回,如果是延时返回,下一步的操作如何捕捉支付接口返回的结果
(2).如何通过银行预留手机号、身份证号和银行卡信息确定绑定的银行是用户本人的。
这个功能一定可以做,但是我们不知道调用哪个第三方接口做,网上找不到
(3).电子合同如何生成
电子合同是模版和用户的相关信息组合而成,这些信息如何组合没有思路,不知到是我们做还是前端做还是移动端做
(4).两个不同的表取出的list如何排序?前台查看总数量确定(比如一次10条),后端在系统消息和公告消息表中如何取数据,数据如何排序?
暂无思路
二.明天计划完成的事情
1.根据方案写具体的接口文档
2.对于无法解决的问题及时询问
3.写具体的sql语句
三.遇到的问题
以上
四,收获
以上
五,项目进度情况
有延期风险
评论