上一篇博文中我们选定Openstack做为我们的基础设施IAAS平台,本文将明确我们用什么技术做为微服务平台的技术选型。

经过对微服务的特性总结和添加一些个性需求后对微服务平台的基本要求

  1. PRC远程调用,必须是TCP协议的,HTTP、HTTP/2不考虑,当然可以同时支持
  2. 服务发现
  3. 负载均衡
  4. 平滑升级,服务升级不影响线上业务
  5. 动态伸缩,阿里叫弹性计算
  6. 多语言支持,这个在后面专门解释一下为什么要支持多语言

容错等其它特性暂不考虑

选型

最早接触的是阿里的EDAS(HSF)的微服务实现,后来知道他们有开源的Dubbo,再后来发现同类的RPC框架有Thrift、Zeroc Ice、Google的gRpc等,随着深入了解发现大Spring也推出一个微服务开发框架叫Spring Cloud,这么多业界大佬都相继推出自家产品,看来微服务的前景大好!

这么多框架带来的问题了也是显而易见的,用谁,怎么用呢?

从大的格局上考虑,这么多特性都支持的并没有,比如Dubbo的服务发现要用Zookeeper等注册中心来实现,Spring Cloud也是需要安装很多组件来实现并且并不支持弹性和多语言,我本人是一个一切从简的人,不喜欢把事情搞的太复杂也不好维护,直到看到这篇文章 http://www.infoq.com/cn/articles/netflix-oss-spring-cloud-kubernetes ,对Kubernets产生的浓厚的兴趣,之前早听过Kubernets一直以为只是个Docker的编排工具没曾想它还有这么多功能,什么服务发现、负载、弹性等一应俱全, 好,就是你了!

但RPC如何实现?

根据我们的要求支持TCP、多语言上面几个就只剩下Thrift和Ice了,考虑到Thrift比较成熟有Apache做背景就没有继续研究Ice,另外看了下性能测试它俩相差不多

因此RPC框架就确定为Apache Thrift !

那么如何将Thrift跟Kubernets结合使用呢,我们将在下一篇博文中展开讨论!

Openstack+Kubernetes+Docker微服务实践之路--选型的更多相关文章

  1. Openstack+Kubernetes+Docker微服务实践之路--基础设施

    近两年微服务在网上聊的如此的如火如荼,备受关注,我在去年下半年的一个项目中也用到了阿里云的EDAS.HSF,深有体会,最近时间空闲出于好奇,决定一探究竟打算自建微服务平台,基本实现EDAS.HSF的功 ...

  2. Openstack+Kubernetes+Docker微服务实践之路--RPC

    重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合.  在选型一文中说到我们选定的RPC框架是Apache Thrift,它的用法是在Ma ...

  3. Openstack+Kubernetes+Docker微服务实践之路--服务发布

    结合上文,我们的服务已经可以正常运行了,但它的访问方式只能通过服务器IP加上端口来访问,如何通过域名的方式来访问到我们服务,本来想使用Kubernetes的Ingress来做,折腾一天感觉比较麻烦,I ...

  4. Openstack+Kubernetes+Docker微服务实践之路--Kubernetes

    经过几番折腾终于搞定Kubernetes了,我们要在Openstack上部署Kubernetes集群,使用最新工具Kubeadm来安装,由于不能直接访问Kubernetes的源,我们需要一台可以穿墙的 ...

  5. Openstack+Kubernetes+Docker微服务实践之路--Docker和Registry2

    渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Centos7,先在一台云主机上安装Docker,Docker的安装非 ...

  6. Openstack+Kubernetes+Docker微服务实践之路--弹性扩容

    服务上线就要顶的住压力.扛的住考验,不然挨说的还是我们这帮做事的兄弟,还记得上图这个场景吗 老办法是服务集群部署,但总归有个上限,之前跟阿里合作的时候他们有个弹性计算可以通过设置CPU的阀值来动态扩展 ...

  7. Openstack+Kubernetes+Docker微服务实践

    Openstack+Kubernetes+Docker微服务实践 .....   Openstack+Kubernetes+Docker微服务实践之路--选型 posted @ 2016-11-15 ...

  8. Openstack+Kubernetes+Docker微服务

    Openstack+Kubernetes+Docker微服务 渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Cent ...

  9. QCon技术干货:个推基于Docker和Kubernetes的微服务实践

    2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...

随机推荐

  1. 【Composer】实战操作一:使用库

    前言 前面我们简单介绍了composer的安装 以及 如何安装库 本文目的 主要实战讲解如何使用库,主要是PSR-0 和 PSR-4的区别,以及如何在代码中引用.关于PSR-0和PSR-4的具体区别可 ...

  2. Yii常用路径说明

    原作者地址:http://www.kuitao8.com/20140520/2483.shtml //framework路径 Yii::getFrameworkPath(); //protected/ ...

  3. linux常用操作指令

    Linux常用操作指令: 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(a ...

  4. php闭包实现函数的自调用,也是递归

    php的闭包可能不常用,但是在某些场合之下还是可以考虑用php的闭包来实现某些功能的,比如递归,这里讲一下用php的闭包实现递归 //php闭包实现函数的自调用,也就是实现递归 function cl ...

  5. jqzoom图片放大镜

    jqzoom是一个图片放大器插件.它功能强大,使用简便! 引入js与css: <script type="text/javascript" src="js/jque ...

  6. ANSI_NULLS、QUOTED_IDENTIFIER

    数据库服务器重启后,游戏登录提示“您输入的用户名不存在,请重新注册!”重启前特意登录过平台,基本操作都正常.这之间并没对数据库做任何修改,怀疑是应用程序服务端的问题.开启跟踪监控登录过程,只跟踪到一个 ...

  7. iOS,视图控制器相关(UIViewController)

    1.视图控制器各个方法调用时机 2.选项卡(Tab Bar)和导航栏(Navigation Bar) 3.有无控制器的页面跳转 4.页面跳转隐藏底部选项卡 5.获取导航栏和状态栏高度,隐藏导航栏返回按 ...

  8. C语言 str2bin 和 bin2str 实现

    需求介绍 在编码或者调试过程中经常需要进行 字节码转换为 十六进制的字符串, 或者将 十六进制字符串 转换为 字节码的需求. 即:  字节码 (内存中存储的 01 串):    11111111 &l ...

  9. react input 获取/失去焦点

    <div className={ this.state.focus ? "dis_bottom_left_onfocus" : "dis_bottom_left&q ...

  10. C#窗体 自定义控件

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Dr ...