聊聊微服务

导语:阅读本文需要一定的基础,如需了解spring框架,以及java开发的基础。

什么是微服务?

百度了一下,大部分关于微服务的定义是这样的: 基于分布式设计思想,可以独立运行的服务并且在遇到故障时可以实现故障的自动化迁移。解释一下, 微服务就是将原来的单体应用(war,jar包等)中根据需要拆分成多个子系统,每个子系统可以分别在不同的服务器上(或者同一服务器的不同端口)独立的运行,至于故障的自动化迁移这个则需要考虑Redis的哨兵机制。(之后会发文详细介绍),如果还不清楚的小伙伴可以看看如下的图
在这里插入图片描述

为何要使用微服务?

提到这点就得说说微服务的好处了。
首先,单体应用耦合度较高,可移植性,可扩展性和可修改性较差,也就是说一旦有某个功能需要修改很可能会涉及到大量的代码修改。并且要实现功能的扩展也较为繁琐。而使用微服务则可以减少耦合度。
其次,微服务可以降低单个服务器的运行负担,一定程度上提高了运行效率。

微服务入门

微服务的核心:SOA(service oriented architecture)面向服务的架构
该架构设计理念是通过一个独立的接口实现服务间的解耦和联系的建立。这个接口只是相关操作的抽象,具体的实现要放在微服务服务器里。下图为通常情况下接口间调用的情形,是通过HttpClient类或者spring的restTemplate类或者实现UrlConnection抽象类中的相关方法实现远程接口的调用。
在这里插入图片描述
然而微服务则不需要再通过controller层,直接和service层对接,加快了执行的效率,如下图所示:
在这里插入图片描述
目前基于SOA设计的主流微服务框架有dubbo、webservice等。但国内用的较多的还是dubbo。接下来介绍一下dubbo

Dubbo

dubbo是阿里巴巴打造的微服务框架,底层是使用NIO的RPC做远程调度。(NIO-non-blocking IO 非阻塞IO,具有双向传输、缓冲传输的特点,加快了传输的效率, RPC-remote procedure call 远程过程调用 是一种长链接的远程调用协议, 面向传输层,不需要了解底层网络技术的协议)

Dubbo的一些基本概念和原理

在dubbo框架中,请求的发送者被称为消费者,而服务的提供者就叫做生产者,消费者发送的请求通过zookeeper注册中心后负载均衡发送给微服务服务器之后进行响应。zookeeper注册中心就像是微服务的管家,通过一张服务列表管理服务,每当服务启动时就往列表中添加未添加的服务名称、服务IP地址和端口号以便之后的找寻。而一旦服务出现问题了(服务器宕机等)那么zookeeper就会通过心跳检测机制(就类似于cmd中的ping指令)检测相应的服务出现问题后会删除服务列表中相应的服务信息。zookeeper还有选举等及机制,详情请见下文:
https://blog.csdn.net/wzk646795873/article/details/79706627
与zookeeper相对的还有eureka,它在检测到服务出现问题后不会删除服务列表的相应服务信息。
总体来说Dubbo可以是一个微服务实现的桥梁而zookeeper则更像是一个管家。

—————————————— 分割线 ——————————————————————
这些是个人自学时候的总结,有错误的话欢迎在留言区指出。

Guess you like

Origin blog.csdn.net/qq_31236027/article/details/111186902