本文作者是Enchant的架构师,他最近研究了Netflix.SoundCloud.谷歌.亚马逊.Spotify等公司的微服务实践,并根据自己的理解总结出了一套适用于现代Web和云技术的微服务实战经验.本文是其中的第二篇,重点介绍服务的交互以及API的设计(第一篇链接). 微服务架构提倡有许多职责单一的小服务组成,这些服务之间互相交互.然而这就造成了一系列的问题,比如:服务之间如何发现彼此?是否采用统一的协议?如果一个服务无法与其他服务通信会怎样?我会在接下来的内容里讨论部分相关话题. 通信协议…
曾经的VIP服务 在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监听,接收到客户端的连接后,会创建一个Socket,并把它交给一个线程进行后续处理. 线程主要从Socket读取客户端传过来的数据,然后进行业务处理,并把结果再写入Socket传回客户端. 由于网络的原因,Socket创建后并不一定能立刻从它上面读取数据,可能需要等一段时间,此时线程…
在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监听,接收到客户端的连接后,会创建一个Socket,并把它交给一个线程进行后续处理. 线程主要从Socket读取客户端传过来的数据,然后进行业务处理,并把结果再写入Socket传回客户端. 由于网络的原因,Socket创建后并不一定能立刻从它上面读取数据,可能需要等一段时间,此时线程也必须一直阻塞着.…
写python代码的人都知道,一个项目写下下来,不可避免的都需要使用很多第三方包,通常我们都是通过pip install ,然而当我们需要上线的时候问题来了,如果中间你自己不记得自己安装了多少个包,这个时候你就面临着需要导出包名字,这个时候你可能想到了 pip freeze > requirements.txt,但是实际开发中你可能会开发很多个项目,每个项目可能都是pip安装了一堆包,如果每次都是这样,导出的包会越来越多.并且多个项目之间并不能很好的隔离,并且可能你每个项目中用的python环境…
当下想学习Java开发的人越来越多,对于很多零基础的人来说,没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料的价格对于刚毕业的大学生来说也是一笔不小的数目. 为此博主呕心沥血整理了这套零基础全套Java教程,不管是小白还是大牛,这套Java学习路路线你都值得拥有. 小白看下边的视频可以成功学会Java并且顺利工作,大神看了下边的资源肯定会谆谆乐道,宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习. 一.Java基础阶段 J…
1.根据api接口访问路径定义好controller和action. 2.记录操作日志.包含接口入参.出参.异常以及重要的节点数据(数据库返回.第三方接口返回.重要的私有变量值) 3.入参合法性检查.非空检查.需要校验身份证.邮箱.手机号.网址等值. 4.定义好接口的返回状态和消息.建议0表示成功,非0表示失败,且不同的状态值必须区分好. 可包括数据库操作.第三方接口调用.入参校验.程序异常.成功等分类. 5.选择合适的HTTP操作,get还是post需要根据场景进行选择. 6.参数传递方式确定…
译序 Qt的设计水准在业界很有口碑,一致.易于掌握和强大的API是Qt最著名的优点之一.此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结.虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,仍然可以学习或梳理关于API设计最有价值的内容).整个篇幅中有很多示例,是关于API设计一篇难得的好文章. 需要注意的是,这篇Wiki有一些内容并不完整,所以,可能会有一些阅读上的问题,我们对此做了一些相关的注释.…
说在前边: 编码问题一直困扰着每一个程序员的编程之路,如果不将它彻底搞清楚,那么你的的这条路一定会走的格外艰辛,尤其是针对使用python的程序员来说,这一问题更加显著, 因为python有两个版本,这两个版本编码格式却完全不同,但我们却经常需要兼顾这两个版本,所以出现各种问题的几率就大了很多. 所以在这里我试图用一篇文章来彻底梳理整个python语言的编码问题,尽量降低以后在这方面举到问题的可能性. ps 此文一定程度上参考和引用了alex的博客:“https://www.cnblogs.co…
Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 图示如下 2 课程状态 该项目的核心就是课程,这里梳理下课程的几个状态 新建课程后 开始选课后: 学生可自由选课撤课 结束选课后: 不可选课不可撤课 结课后: 老师先给学生打分,学生再给学生评价 老师确认给分完毕 3 ER图 E-R图也称实体-联系图(Entity Relationship Dia…
API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多很多小的设计考量一点点叠加起来的(也即John Ousterhout老爷子说的Complexity is incremental[8]).成功的系统不是有一些特别闪光的地方,而是设计时点点滴滴的努力积累起来的. 因此,这里我们试图思考并给出建议,一方面,什么样的API设计是__好__的设计?另一方面…