微服务入门

  1. 微服务概述
    1. 微服务生态
    2. 微服务技术栈
    3. 什么是微服务

微服务概述

微服务是一种软件开发技术,是面向服务的体系结构(SOA)架构样式的一种变体

它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值

每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)

每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等

另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建

微服务特点

  • 有自己的堆栈,包括数据库和数据模型
  • 通过REST API,事件流和消息代理的组合相互通信
  • 它们是按业务能力组织的,分隔服务的线通常称为有界上下文

微服务的优势

  • 可以更轻松地更新代码
  • 团队可以为不同的组件使用不同的堆栈
  • 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载

解耦

微服务和整体架构之间的区别在于,微服务由许多较小的,松散耦合的服务组成一个应用程序,与大型,紧密耦合的应用程序的整体方法相反

为了让程序员可以更好将系统架构向微服务迁移,于是就衍生出了微服务的代码框架,其中比较出名的方案有SpringCloud、Dubbo两家

微服务可以理解为一种非常细粒度的垂直拆分

微服务不是单纯的一个RPC框架 + 注册中心,而是与各种周边配套的无缝整合

微服务生态

注册中心

拉取或注册服务集群的服务信息

配置中心

拉取服务集群的配置信息

服务网关

身份校验,通过请求路由,负载均衡操作将请求发送到服务集群

分布式缓存

请求先进入缓存集群查询,没有数据再进入数据库查询

分布式搜索

对于复杂业务的数据查询,数据统计

数据库

数据库通常进行事务方面的操作,安全性较高的操作

消息队列

异步通信消息队列组件

分布式日志服务

记录日志,异常信息

系统监控链追踪

可以监控服务器负载,cpu占用率等情况

Jenkins

自动化编译微服务

Docker

打包,形成镜像

Kubernetes、rancher

自动化部署微服务项目

微服务技术栈

微服务治理

注册发现,远程调用,负载均衡

配置管理,网关路由

系统保护,流量控制

服务授权,熔断降级

分布式事务,TCC模型

AT模型,Seata

异步通信技术

MQ消息模型,消息堆积问题

SpringAMQP,仲裁列队

消息可靠性,镜像集群

延迟列队,数据持久化

缓存技术

缓存穿透,雪崩

SpringDataRedis

Redis主从复制,OpenResty

缓存数据同步,Nginx本地缓存

Redis持久化,多级缓存分层

Redis分片集群,Lua脚本

Redis数据结构

DevOps

Dockerfile,DockerCompose

GrayLog,Jenkins

SkyWalking,Docker使用

Kubernetes

搜索技术

DSL语句,ES集群

RestAPI,集群脑裂

竞价排名,聚合统计

自动补全,助理坐标,拼音分隔

什么是微服务

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题

微服务这种方案需要技术框架落地,全球的互联网公司都在积极尝试自己的微服务落地技术,国内最知名的就是SpringCloud和阿里巴巴的Dubbo


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1300452403@qq.com

文章标题:微服务入门

字数:1.1k

本文作者:Os467

发布时间:2022-08-15, 15:44:35

最后更新:2022-09-05, 00:06:51

原始链接:https://os467.github.io/2022/08/15/%E5%BE%AE%E6%9C%8D%E5%8A%A1/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏