微服务架构基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu1014745867/article/details/85098310

什么是微服务?

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。
微服务架构的思考是从与整体应用对比而产生的。

微服务起源来自于2014年3月Martin Fowler写的一篇文章,链接如下:
http://martinfowler.com/articles/microservices.html

微服务的几个特性:

1.微服务是一种架构风格,也是一种服务;
2.微服务的颗粒比较小,一个大型复杂软件应用由多个微服务组成,比如Netflix目前由500多个的微服务组成;
3.它采用UNIX设计的哲学,每种服务只做一件事,是一种松耦合的能够被独立开发和部署的无状态化服务(独立扩展、升级和可替换)。
在这里插入图片描述

使用微服务的好处

如果不考虑投入成本的话(任何产品形态的引入都会有优缺点,投入产出)
1.高效率: 一个微服务基本是一个能独立发布的应用服务,因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也较小,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发,甚至整个团队的组织架构也会更精简,因此沟通成本低、效率高。
2.灵活性: 根据业务的需求,不同的服务可以根据业务特性进行不同的技术选型,是计算密集型还是I/O密集型应用都可以依赖不同的语言编程模型,各团队可以根据本身的特色独自运作。
3.高可用性: 服务在压力较大时,也可以有更多容错或限流服务。

常用的微服务框架有哪些?

Dubbo
Dubbo是阿里多年构建生产级分布式微服务的技术结晶,服务治理能力非常丰富,在国内技术社区具有很大影响力,目前 github 上有超过 16k 星。Dubbo本质上是一套基于 Java 的 RPC 框架,当当 Dubbox 扩展了 Dubbo 支持RESTful 接口暴露能力。

RESTful
基于 Spring 的框架本质上可以认为是一种 RESTful 框架(不是 RPC 框架),序列化协议主要采用基于文本的 JSON,通讯协议一般基于 HTTP。RESTful 框架天然支持跨语言,任何语言只要有 HTTP 客户端都可以接入调用,但是客户端一般需要自己解析 payload。目前 Spring 框架也支持 Swagger 契约编程模型,能够基于契约生成各种语言的强类型客户端,极大方便不同语言栈的应用接入,但是因为 RESTful 框架和 Swagger 规范的弱契约特性,生成的各种语言客户端的互操作性还是有不少坑的。

gRPC
gRPC是谷歌近年新推的一套 RPC 框架,基于 protobuf 的强契约编程模型,能自动生成各种语言客户端,且保证互操作。支持HTTP2 是 gRPC 的一大亮点,通讯层性能比 HTTP 有很大改进。Protobuf 是在社区具有悠久历史和良好口碑的高性能序列化协议,加上 Google 公司的背书和社区影响力,传播效果杠杠滴。

RestCloud
RestCloud定位是一款轻量级面向企业应用层的微服务治理及低代码开发平台,通过本平台可以快速的开发企业级前后端分离的业务系统以及基于微服务架构的微应用系统,本平台通过建立数据模型和业务模型能够无代码快速的发布服务并对服务的运行状况进行监控,同时也能基于数据模型快速生成Java代码并快速发布为Rest服务,同时也提供基于注解式的开发模式, 系统能自动通过注解扫描自动发布Rest服务并生成国际标准的OpenAPI3.0接口文档,在本平台开发的Rest服务自动支持MongoDB和RDBS关系数据库,同时针对关系数据库可以很好的支持跨数据库事务功能。

猜你喜欢

转载自blog.csdn.net/yu1014745867/article/details/85098310