Springcloud微服务架构基础知识解析

作者:知识追寻者 时间:2023-01-26 14:37:10 

一 前言

学习微服务要从基础的架构学起,首先你要有个微服务的概念才能学习对吧!!如果你都不知道啥是微服务,就一头扎进去学习,你自己也觉得自己也学不会对吧。本篇文章主要让大家快速了解基础的架构分格,以便于微服务入门。

二 单体架构

单体架构是传统架构,其发展了几十年,我们今天任然还在用单体架构开发,存在即合理;单体架构也就是通常的表现层跟UI界面交互,业务层写业务逻辑,数据DAO层访问数据库。其部署方式也很简单,直接将项目打包成war包放进web服务器(如tomcat,jetty)中运行; 其优点如下:

易于开发,架构单一,很容易上手,一站式到底;

易于部署,直接放进web服务器即可运行;

其缺点如下:

维护困难,每次进行代码维护,往往修改都是从上而下改动,需将整个程序部署才能看见修改结果;

二次开发难度大,都要读懂大量代码,业务逻辑复杂;

测试难度大,随着业务越多,测试的难度会越大;

Springcloud微服务架构基础知识解析

分布式架构

分布式架构简单的可以理解为由多个单体结构组成,但是它们都是通过发布的服务相互调用;

Springcloud微服务架构基础知识解析

分布式服务架构中比较出门的就是面向服务的SOA(Service-Oriented Architecture)架构,服务之间通过通信协议进行相互通信;比较出名的服务治理框架也就是阿里开源的Dubbo框架,目前在Apache旗下,服务之间通过远程过程调用(RPC),主要角色如下;

注册中心:服务的注册与发现;

提供者:提供服务

消费者:消费服务

监控中心:监控服务之间的日志和健康;

Springcloud微服务架构基础知识解析

四 微服务架构

到目前为止其实关于微服务架构还是没有一个精确的定义;2014 年 Martin Fowler 在 《Microservices》 一文中提出了微服务的概念,大体的我们可以总结为如下几点:

一个单体应用开发成多个微小服务;

微小服务间通常通过HTTP协议或者restful风格调用;

每个微小服务围绕业务逻辑构建,独立自动部署;

In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

Springcloud微服务架构基础知识解析

微服务的优点如下:

  • 独立部署,易于开发维护

  • 服务拆分,业务逻辑清晰,

  • 服务间通过HTTP通信,耦合度低

  • 微服务缺点如下:

  • 部署难度大,目前有docker等容器化技术相对好点;

  • 分布式事物问题突出;

五参考文档

dubbo官方文档

miroservice

来源:https://www.cnblogs.com/zszxz/p/12056470.html

标签:Spring,cloud,微服务,架构
0
投稿

猜你喜欢

  • Java Swing JButton按钮的实现示例

    2023-05-05 00:25:43
  • 以Java代码的方式总结几个典型的内存溢出案例

    2023-06-11 04:00:56
  • 亲手教你SpringBoot中的多数据源集成问题

    2023-08-19 02:57:20
  • Java Servlet实现表白墙的代码实例

    2021-08-18 16:57:11
  • es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程详解

    2023-12-06 07:34:14
  • iOS实现从背景图中取色的代码

    2023-07-06 15:18:32
  • c#调用arcgis地图rest服务示例详解(arcgis地图输出)

    2023-03-05 14:56:05
  • ReentrantLock从源码解析Java多线程同步学习

    2023-10-13 02:32:55
  • c# 使用OpenCV识别硬币

    2021-12-18 15:09:13
  • 如何利用C#正则表达式判断是否是有效的文件及文件夹路径

    2022-03-06 23:34:45
  • c#解压文件的实例方法

    2022-04-25 09:49:40
  • Android SharedPreferences存取操作以及封装详解

    2022-11-02 07:10:19
  • 详解Android的网络数据存储

    2022-08-22 01:39:39
  • 利用maven引入第三方jar包以及打包

    2023-11-15 04:23:17
  • flutter 怎么实现app整体灰色效果

    2023-01-24 21:23:22
  • Java 数据结构与算法系列精讲之时间复杂度与空间复杂度

    2022-03-19 20:19:50
  • C# 添加、修改和删除PDF书签的实例代码

    2022-09-24 06:45:55
  • RocketMQ消息过滤与查询的实现

    2023-06-26 10:04:25
  • Devexpress treelist 简介

    2023-02-13 23:07:56
  • RxJava中多种场景的实现总结

    2023-01-09 05:39:02
  • asp之家 软件编程 m.aspxhome.com