一、如何实施微服务
微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。
实施微服务需要具备以下条件:
- 计算和存储资源能否快速的分配
- 是否具备快速部署的能力,因为微服务每个服务都比较微小,所以不管是测试环境还是生产环境都需要快速部署的能力
- 基本的监控,包括CPU、内存、网络等
- 标准化的RPC
Spring Boot 是一套快速配置脚手架,可以基于 Spring Boot 快速开发单个微服务。
Spring Cloud 是一个基于 Spring Boot 实现的服务治理工具包;Spring Boot 专注于快速、方便集成的单个微服务个体;Spring Cloud 关注全局的服务治理框架。
Spring Boot / Cloud 是微服务实践的最佳落地方案。
当然,微服务的设计还对运维提出了更高的要求,如何进行自动构建,如何进行自动发布,对于应用程序的质量管理以及遇到峰值时如何通过横向扩展、弹性伸缩对于整个技术团队都提出了更高的要求。
二、最流行6种微服务RPC技术
开源 RPC 框架有哪些呢?
一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。
跟语言平台绑定的开源 RPC 框架主要有下面几种。
- Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
- Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
- Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
- Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言
而跨语言平台的开源 RPC 框架主要有以下几种。
- gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。
- Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。
三、rest
1. 什么是REST
REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。
REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
REST与RPC比较
比较项 规范 | REST | RPC |
通信协议 | HTTP | 一般使用TCP |
性能 | 低 | 高 |
灵活度 | 高 | 低 |
高与低是对实现两种规范框架的相对比较,但也不是绝对的,需要根据实际情况而定。
都是网络交互的协议规范。通常用于多个微服务之间的通信协议。
2. REST与RPC应用场景
REST和RPC都常用于微服务架构中。
- HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。
RPC在微服务中的作用,RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。