摘要

嗯~ o( ̄▽ ̄)o,上一篇帖子中我还在写我想研究Spring Cloud,当写这个贴子的时候我就已经想抛弃它了,那么在抛弃之前先来聊聊吧。

一、云

什么是云,我的理解云就是通过虚拟化的方式,把所有的资源整合起来统一管理调度使用。根据权威人士定义,云有三种服务模式:

  • SaaS 【software as a service】 软件即服务 – 用户通过网络租用基于Web的软件使用。(虚拟桌面,在线游戏等)
  • PaaS 【platform as a service】 平台即服务 – 指将软件研发的平台作为一种服务。(数据库,开发工具,web服务器,软件运行环境等)
  • IaaS 【infrastructure as a service】 基础架构即服务 – 用户通过网络直接访问底层的计算、存储和网络资源。(虚拟机,服务器,存储空间,网络带宽等)

SaaS不熟,剩下两个可以举个例子,Openstack和SDN都属于IaaS,因为它们既能提供虚拟机,也能提供虚拟防火墙等;而Kubernets则属于PaaS,只提供容器化的虚机,不太关注网络服务。

二、平台

接着来聊平台。从广义上来说,能提供服务的就是平台,比如我们可以说Openstack平台,k8s平台这样的。但平台与平台之前肯定是有区别的,或者说提供的服务的目标不太一样。Openstack/SDN这样的平台,其主要目的是为了给客户提供虚拟化的机器/虚拟化的网络设备等等,相比之下它们更加全面,也更加传统。所以可以作为企业/运营商的一种整体解决方案,代替专线、防火墙、负载均衡、交换机等硬件设备。

k8s的基础是Docker,Docker这种虚拟化技术由于内核不是独立的,所以在Linux服务器上无法运行windows容器(Windows服务器上可以运行Linux容器和Windows容器)。而它的优势则是更加轻量,更快,可以当成一个单纯的服务来使用。容器化代表了“高强度工作负载”、”卓越的性能”、”原生的、一致的体验“等等,裸金属+容器也是目前的趋势,更加倾向于互联网等高新技术公司。

三、微服务

然后继续聊微服务。其实对传统公司来说,只需要云服务,有或者没有微服务,影响都不大。但容器化还是需要的,毕竟容器化之后在服务升级/扩展方面会有很大提升,所以甚至出现了k8s上再搭建Openstack/SDN这样的组合,既有容器化的优势,又有全面的虚拟化解决方案。而对于互联网公司来说,微服务的好处和前后端分离一样,就是能够提升开发/运维效率。

目前主流的三个微服务框架:Spring Cloud,Dubbo,Istio,前者是Java的,而Istio目前是基于K8s的。假象一下,如果单纯使用Spring Cloud,在某台服务器上部署应用,然后自动发现/自动路由/自动化运维/插件式管理等等,看上去很美好,但有个问题就是部署还是传统的方式:登上服务器,部署启动。按照微服务的设计,一般情况下需要启动的服务会有很多,这时候部署就成了一件很痛苦的时候。如果要解决这个问题,那么就又回到了容器化之路上来了,而走到了容器化之路上,不好意思,这里是k8s的地盘 …… 。所以,似乎还是一上来就与k8s绑定的Istio要强一丢丢。当然了,如果用k8s + 自己写compose来管理容器,这样也是可以的,毕竟据说Spring Cloud在纯java项目上,服务间的交换效率还是要比Istio高一些的。