上一篇博文中我们选定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. 【iCore3 双核心板】例程一:ARM驱动三色LED

    实验指导书及代码包下载: http://pan.baidu.com/s/1o6w6Xnk iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  2. Java虚拟机学习记录

    一.java平台无关性的基础 1.和各个平台有关的虚拟机: 2.和各个平台无关的中间语言(class文件). 二.虚拟机语言无关性的基础 1.class文件 三.java虚机机器中java程序的生命周 ...

  3. profile

    项目开发中,使用git最为版本控制工具,往往会建立开发分支.测试分支和生产分支. 各个分支的数据库url,所依赖的接口url可能不同,直接配置的话,在合并分支时往往出现冲突.使用profile可以有效 ...

  4. OpenERP/Odoo命令行参数

    http://blog.sina.com.cn/s/blog_7cb52fa80102v8h1.html

  5. 安卓仿微信Tab页用Fragment实现

    最终效果图如: 实现步骤: 新建项目tabdemo,我选的是4.0.3版本,然后依次新建三个Fragment,名字分别为:ChatFragment.FriendFragment.FindFragmen ...

  6. Install MySQL on Mac by Homebrew

    1.  安装mysql brew update brew install mysql 2. 启动mysql mysql.server start 3. 登录mysql mysql -uroot -p ...

  7. spring与redis简单整合

    项目结构 整合需要的依赖 <dependencies> <dependency> <groupId>org.springframework</groupId& ...

  8. js验证手机号输入是否符合规则

    function isPhone(phone){ var myreg = /^(((13[0-9]{1})|15[0-9]{1}|17[0-9]{1}|185|18[0-9]{1})+\d{8})$/ ...

  9. JDBC增删改查,PreparedStatement和Statement的区别

    此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...

  10. .NET学习记录2

    前面回忆了一些C#基础语法,简单整理了一下笔记,要想深入研究的话,那就得找一本比较好的书了.接下来继续回忆C#语法知识. 方法 功能:用来复用代码的.当我们在一个程序 中反复的写了同样的代码,那么一般 ...