本人原创,发布于: http://www.jianshu.com/p/44ae6de9efa5
背景资料: 如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法
知识点:
1.微服务:
微服务化的趋势现在似乎有所展现,具体的细节不讲太多,我们就说一下他的特点。
一般框架式开发(比如 java 的 ssh )是提供一套功能强大的 MVC 框架,主要的代码基本写在一个项目里。
在微服务的架构和我们现在常见的框架式开发非常不同。
微服务是把业务拆的很细,然后搞出很多很小的项目来。
用一个文章发布模块举个例子。
用户向服务器 post 请求,提交了一篇文章。文章发布服务收到了用户的的 post,然后把其中 header 中的 token 取出来,然后向用户验证 API 发出 rest api 请求,当收到验证通过的返回值后,再进行下一步。
可以看出一般在框架式开发中,代码的共享是通过函数调用完成的,但是在微服务中,则是不同小项目之间通过 REST API 互相调用。
2.微服务引起的无服务器革命:
你可能听过 docker 之类的框架,但是你听说过 aws lambda,或者云函数么?
aws 现在推出了一款叫 lambda 的服务,而他是这样的:
用户将一段较为短小的代码放到 lambda 里,封装成一个云函数,而这个云函数它运行在 aws 的集群之上。
当这个云函数被触发的时候,aws 服务器的集群有多少资源,他就能跑多少份,而云函数没被触发的时候,代码停在硬盘上,根本不要钱。
可见这个云函数的扩展性简直不能更赞。更赞的是你根本不用关心服务器的架构.........你把代码放上去就行了,什么操作系统,什么 nginx 和你没关系。
这个技术被叫做 serverless,无服务器革命。
顺便提一下 API GATEWAY 这个东西。
如果每个云函数都要花时间和空间去解析 http 请求,然后还要负责 https 加密,最后还要压缩 http 返回值的话,这个云函数就很难做的很小了。
所以提供云函数的云商都会提供一份 API GATEWAY 的服务。这个服务统一处理 http 协议相关的问题,然后根据用户的 api 定义( swager )把参数传递给云函数,而云函数只用接 params 和返回 json 就行了。
由于 API GATEWAY 的存在,所以他还附赠负载均衡,反 DDOS,流量限制,log 跟踪等等等功能。。反正简直惊了。
FPGA 中文叫可编程逻辑模块.
开发是通过特定的高级语言编程后,将逻辑编译为数字电路,里面根本没有指令集。
优点是功耗低速度快,无论是吞吐还是延迟都非常赞。
单体购买较贵,但是被基础云服务商大规模采购后,价格不贵。
缺点是语法较为复杂和冷门,受限于 FPGA 的特点,他也烧不进太复杂的逻辑,代码量有限。
1 + 2 + 3 = ?
在传统框架下,也许 80%的调用集中在某个函数上,但是其他的代码一样会被加载进内存。
在微服务中,你的核心函数可以被实例化无数次,同时其他的冷门函数甚至没有运行。
假如你有个核心函数运算量很大,大到能养活一块 FPGA。。。。这画面太美。
关于支持和前景的问题:
微软现在就在大规模使用 FPGA,AZURE 上每台服务器都已经安装了 FPGA 的模块,其用途是提供超高性能的虚拟网卡。
如果下一步,微软的云函数多了一个选项,那就是允许你上传 FPGA 的代码,并且以云函数的模式运行。(虽然最少要吃一块 FPGA,因为我不知道怎么搞虚拟化。)那么这个事情就成了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.