一起玩转微服务(4)——如何实施微服务

一、如何实施微服务

微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。

实施微服务需要具备以下条件:

  • 计算和存储资源能否快速的分配
  • 是否具备快速部署的能力,因为微服务每个服务都比较微小,所以不管是测试环境还是生产环境都需要快速部署的能力
  • 基本的监控,包括CPU、内存、网络等
  • 标准化的RPC

Spring Boot 是一套快速配置脚手架,可以基于 Spring Boot 快速开发单个微服务。

Spring Cloud 是一个基于 Spring Boot 实现的服务治理工具包;Spring Boot 专注于快速、方便集成的单个微服务个体;Spring Cloud 关注全局的服务治理框架。

Spring Boot / Cloud 是微服务实践的最佳落地方案。

当然,微服务的设计还对运维提出了更高的要求,如何进行自动构建,如何进行自动发布,对于应用程序的质量管理以及遇到峰值时如何通过横向扩展、弹性伸缩对于整个技术团队都提出了更高的要求。

一起玩转微服务(4)——如何实施微服务

二、最流行6种微服务RPC技术

一起玩转微服务(4)——如何实施微服务

开源 RPC 框架有哪些呢?

一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。

跟语言平台绑定的开源 RPC 框架主要有下面几种。

  • Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
  • Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
  • Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
  • Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言

而跨语言平台的开源 RPC 框架主要有以下几种。

  • gRPC:Google2015 年对外开源的跨语言 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 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

原文 

http://www.cnblogs.com/skyme/p/13156700.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 一起玩转微服务(4)——如何实施微服务

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址