zoukankan      html  css  js  c++  java
  • 一起玩转微服务(4)——如何实施微服务

    一、如何实施微服务

    微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。
    实施微服务需要具备以下条件:

    • 计算和存储资源能否快速的分配
    • 是否具备快速部署的能力,因为微服务每个服务都比较微小,所以不管是测试环境还是生产环境都需要快速部署的能力
    • 基本的监控,包括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 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

  • 相关阅读:
    execing process _ golang
    Spawning process _ golang
    environment variables _ golang
    common-line flags _ golang
    command-line arguments _ golang
    line filters _ golang
    writing files _ golang
    Reading files _ golang
    为什么使用do{}while(0)来进行宏定义
    单向链表的反转
  • 原文地址:https://www.cnblogs.com/skyme/p/13156700.html
Copyright © 2011-2022 走看看