近几年,微服务架构由于其简单和灵活性,受到业内越来越多人士的青睐。目前对“微服务” 的架构风格并没有提供精确的定义,它的优势是什么?在技术选型上需要注意哪些问题?在企业中的应用程度又如何呢?本期【开源访谈】邀请到腾讯后台高级工程师刘豪,与大家分享开源微服务架构在企业中的应用。
本期嘉宾:刘豪,腾讯后台高级工程师,主要从事于微服务架构、分布式 NoSQL存储、大数据计算平台等技术领域的相关工作。
1、嘉宾自我介绍
我叫刘豪,2012 年硕士毕业进入腾讯公司,目前是一名后台开发的高级工程师,主要从事于微服务架构、分布式 NoSQL 存储、大数据计算平台等技术领域的相关工作。
2、先谈谈您对“微服务”这个概念的理解。
个人理解,微服务是一种架构风格,通常一个大的业务系统由多个具体的服务组成,而这些服务本身有一些特点:
- 每个服务都比较简单,服务功能单一;
- 拥有轻量级的通信框架;
- 有各自独立的进程,能独立部署;
- 服务之间松耦合,具有很高的灵活性。
3、微服务架构的优势是什么?主要解决了哪些痛点?
从 Tars 架构上来看,微服务架构的优势有很多,主要体现在以下几个方面:
- 每个服务功能简单单一,只关注于一个业务功能,每个服务可以独立开发,开发效率高。
- 微服务架构方式是松耦合的,每个服务可独立部署,灵活性好。
- 微服务架构提供的轻量级通信框架和高可用能力,能有效解决不同编程语言、不同系统平台之间服务交互的问题,以及服务在分布式环境下遇到的容灾容灾、复杂均衡等问题,让开发更加聚焦业务逻辑本身。
- 微服务架构提供了持续交付和运营的能力,让运维工具、运维管理机制更加统一和标准化,让服务部署、发布、监控、问题定位等运营操作变得简单高效。
4、微服务目前在企业的应用程度如何?它能给企业带来什么价值?
目前互联网企业中很多都在使用微服务架构,帮助企业提供了敏捷开发、持续交互、高效运营等方面的能力。
5、能否向大家介绍一下利用“微服务架构”进行实践的典型案例?
这里介绍一下公司旗下某个投资公司进行“微服务架构”的实践。
下面是他们先前的架构和快速发展下遇到的问题和瓶颈:
使用 Tars 微服务架构后,很好的解决了他们的问题。最后,他们改造的系统架构如下:
6、微服务架构在技术选型上,主要要注意哪些方面的问题?
我个人认为,在微服务的技术选项上,需要重点注意的有以下几个问题:
- 服务注册与发现
- 负载均衡
- 通信框架与通信协议
- 服务部署、发布、升级
- 服务监控和告警
- 资源管理和服务调度
- 配置管理和日志收集
7、谈到微服务,大家都会联想到容器技术。如果没有容器技术的支持,会给微服务带来哪些不便?
容器化,特别是 Docker,给我们带来了非常大的好处。在没有容器化以前,我们经常遇到一些问题,比如:
- 环境异构造成的交付失败,主要体现在几个方面,一是基础环境,如OS、GCC等,二是运行环境,如Apache、Nginx、Tomcat等,三是依赖环境,如各种动态库和jar。
- 运行包异构造成的部署复杂,比如执行文件、目录管理的问题
- 如何提高部署的效率,并且提升资源的利用率,一直是比较头脑的问题。
8、目前腾讯对微服务架构的使用情况如何?是否已将多数业务架构转向微服务?
这里主要说下,Tars 在腾讯的使用情况,目前腾讯内部有 160 多个业务(比如手机 qq、qq 手机浏览器、应用宝、腾讯手机管家等)在使用,覆盖的服务器规模超过 1.6w 多台,有 2w 多个服务模块,6w 多的服务进程在平台上运行,每天模块间的调用量超过 10 亿次。
9、您对微服务未来的发展有哪些期待?
期待微服务在资源隔离、资源调度等方面能做的更好,以达到运维自动化和提高整体资源利用率的目的。
竟然有php!
大河向东流啊
是不是应该改为 『头痛』?@OSC源创君
请问哪个微服务框架比较好用?
您好, 我们也正在利用微服务的思想尝试将后端服务化, 虽然目前只是初具规模, 但服务化的好处我们是深有体会, 复用率高, 服务的隔离原则和松散的耦合使开发效率大大提高. 但是因为我们是按照restful + http的方式在业务逻辑层组合的各个服务的数据, 当一个业务逻辑需要调用大量顺序执行的服务的话(不需要顺序的我们用curl的多线程并发请求以提高速度), 就会很慢~毕竟http很耗时~ 我想请问大神, 有么有什么成熟的轻量级通讯框架能解决我这个痛点啊~ 我们公司规模不大, 重量级的框架对我们来说反而是个负担.