搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Python实现图的最短路径算法_python 图 最短路径
2
单点登录(SSO)看这一篇就够了
3
修改fstab导致UBUNTU无法启动的解决办法_linux开机显示systemd-fstab-generator failed with exit
4
性能测试(三)----loadrunner的使用_loadrunner压力测试500并发
5
如何补丁1个文件(linux diff patch)_patch: **** only garbage was found in the patch in
6
upload-labs·文件上传(靶场攻略)
7
安卓开发投屏反控实现方式_android投屏功能开发
8
NLTK:自然语言处理的巫师,Python中的语言大师!
9
利用android studio制作简单的QQ的注册、登录、忘记密码的页面_android studio注册qq页面
10
H5页面在浏览器中跳转APP的方式/URL Scheme/Universal Link_url scheme前端
当前位置:
article
> 正文
什么是单体应用?什么是微服务?
作者:我家小花儿 | 2024-04-28 10:59:09
赞
踩
单体应用
Monolith(单体应用)
, 也称之为单体系统或者是 单体架构 。就是一种把系统中所有的功能、模块耦合 在一个应用中的架构方式。
也就是将所有的代码及功能都包含在一个WAR包中的项目组织方式。它的组成就是由 多个模块(所有资源)打成一个war包,运行在一个服务器上,也就是 一个进程去运行。典型的就是用SSM框架做的web项目,部署在tomact服务器上。
缺点:
技术选择难:
扩展难:不易进行功能扩展。
可靠性差
迭代困难
跨语言程度差
团队协作难
优点:
项目易于管理
部署简单
MicroService(微服务)架构
, 是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。由一个或多个微服务组成。
那什么是微服务(分布式)?
就是 将一个大的应用拆分成多个小的应用(微服务),这些小的应用相对独立,每个小的应用都有自己的容器(Tomcat),有自己的运行进程,这些小的应用通过网络协议(HTTP Rest)进行相互通信,所有的应用一起工作完成整个项目的业务。
每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。
系统中的各个微服务可被技术选项,独立开发,独立部署,独立运维,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
优点:
方便局部扩展,团队协作方便
技术选型多样化
单个微服务的复杂性低,一个微服务就干一件事
单个微服务容易开发和维护
服务和服务之间相对松耦合
数据库选型多样化(分库)
当项目规模大,微服务整体来说性能好。。。
缺点:
微服务之间数据交互速度受网络影响
技术成本高
开发成本高,如分布式事务处理
整个项目总体来看,比较复杂
微服务的部署比较麻烦
这里给出一张图片,便于理解单体应用和微服务的区别:
上面说到技术成本高,那么需要
那些技术栈来实现微服务呢?
一个微服务架构设计需要以下内容:
1.服务治理
2.服务注册
3.服务调用
4.服务负载均衡
5.服务监控
6.服务开发。。。
以上这些都有不同的技术去实现,比如:
服务治理:有阿里的dubbo,
服务注册:有ZooKeeper,Eureka
服务调用:有Rest、RPC,
服务开发:用SpringBoot、Spring、SpringMVC,
服务配置与管理有:阿里的Diamond
服务熔断器有:Hystrix、Envoy
服务负载均衡有: Ribbon、Nginx
服务接口调用(客户端调用服务的简化工具): Ribbon、 Feign
服务配置中心管理有:S pringCloudConfig、Chef
服务路由有(API网关): Zuul
服务监控有: Zabbix、Nagios、Metrics、Spectator
消息队列有: Kafka、RabbitMQ、ActiveMQ
全链路追踪有: Zipkin,Brave、Dapper
服务部署有: Docker、OpenStack、Kubernetes
数据流操作开发包有: SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)
事件消息总线有: Spring Cloud Bus
而目前较成熟的微服务架构就是阿里的dubbo以及Spring中的SpringCloud。这也是我们需要学习的。
微服务设计几大原则
1) AKF 拆分原则
2) 前后端分离原则
前后端技术分离,可以由各自的专家来对各自的领域进行优化,这样前端的用户体验优化效果更好。
分离模式下,前后端交互界面更清晰,就剩下了接口模型,后端的接口简洁明了,更容易维护。
前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支持多个前端:例如:微信 h5 前端、PC 前端、安卓前端、IOS 前端。
3) 无状态服务
4) 基于RestFul 的通信风格
无状态协议 HTTP,具备先天优势,扩展能力很强。例如需要安全加密,有现成的成熟方案 HTTPS 即可。
JSON 报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好。
语言无关,各大热门语言都提供成熟的 Restful API 框架,相对其他的一些RPC 框架生态更完善。
微服务远程调用方式
1.RPC:
Remote Produce Call远程过程调用,是一个计算机通信协议。类似的还有RMI。 自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型。
该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。
两个程序进行通讯,必须约定好数据传输格式。就好比两个人聊天,要用同一种语言,否则无法沟通。所以,我们必须定义好请求和响应的格式。另外,数据在网路中传输需要进行序列化,所以还需要约定统一的序列化的方式。
2.Http:
http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。
现在热门的Rest风格,就可以通过http协议来实现。
MVC、RPC、SOA、微服务架构之间的区别
1 MVC 架构
MVC 架构已经很熟悉了,就是一个单体架构。
代表技术:Struts2、SpringMVC、Spring、Mybatis 等。
2 RPC 架构
RPC(Remote Procedure Call):远程过程调用。它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 服务与服务之间隔离的,都是通过应用来触发。
代表技术:Thrift、Hessian 等。
3 SOA 架构
SOA(Service oriented Architecture):面向服务架构
ESB(Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一个服务与服务之间的交互。
ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等。
代表技术:Mule、WSO2
4 微服务架构
微服务就是一个轻量级的服务治理方案。
代表技术:SpringCloud、dubbo 等
学习java的,可以关注公众号,可以免费获取毕业设计项目、各种免费软件、资料,笔记哦。
低价开通公众号,小程序流量主:0.3/人,若有需要联系V:nzdszbd
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/501897
推荐阅读
article
python
基本语法与
使用
...
Python是一种高级编程语言,它被广泛应用于各种领域,包括Web开发、数据科学、人工智能等。
python
基本语法与
使用
...
赞
踩
article
远程桌面
连接-
GPU
加速
_
远程桌面
gpu
加速
...
Nvidiaopenglrdp.exe——官网下载安装后,
远程桌面
GPU
利用率会上升。未完待续。。。_
远程桌面
gpu
加...
赞
踩
article
【IR
论文
】
Google
对通过
prompt
LLM
做
Query
Expansion
的
工作...
本篇
论文
是
Google
对
LLM
使用
prompt
做
Query
Expansion
的
研究,文中做了需要实验,...
赞
踩
article
从
单体
式架构迁移到
微
服务
架构,最全
SpringBoot
学习教程_
springboot
单体
应用
升级至
微
...
相反,应该采取逐步迁移
单体
式
应用
的策略,通过逐步生成
微
服务
新
应用
,与旧的
单体
式
应用
集成,随着时间推移,
单体
式
应用
在整个架...
赞
踩
article
程序员
如何搞
副业
?...
自由职业者:作为自由职业者,你可以利用你的编程技能在网上找到各种项目和任务。平台如Upwork、Freelancer、F...
赞
踩
article
Win10
安装
配置
Redis
,修改密码_
redis
安装
包
windows
...
Win10
安装
配置
Redis
,修改密码_
redis
安装
包
windows
redis
安装
包
windows
...
赞
踩
article
【
Tomcat
】
Tomcat
整体
架构
及其设计精髓分析(上)
_
tomcat
程序
架构
...
Tomcat
设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对...
赞
踩
article
flask
怎么
连接
Oracle
,
flask
中使用
连接
池和
app
_
context
求助...
v2ex 的处女贴,奉献给
flask
。刚开始学
flask
,还没时间看 sqlalchemy 。python2.7...
赞
踩
article
springboot
整合
bbos
s操作
elasticsearch
_
elasticsearch
bbo...
elaticsearch有很多的java客户端,像transportclient,jestclient,springda...
赞
踩
article
java
程序通过modbusTCP
协议
直连三菱PLC机
FX5U
型号采集数据_三菱
fx5u
modbu...
Java通过modbusTCP
协议
采集三菱
FX5U
型PLC的数据。_三菱
fx5u
modbustcp
地址映射
表三菱fx5...
赞
踩
article
ORA
-
01034
:
ORA
CLE not
available
ORA
-
27101
_
ora
-2710...
问题描述:出现
ORA
-
01034
和
ORA
-
27101
的
原因是多方面
的
:主要是
ora
cle当前
的
服务不可用,shared ...
赞
踩
article
【
Hadoop
技术篇】
hadoop
的使
用
_
hadoop
怎么
用
...
hadoop
启动和体验
_
hadoop
怎么
用
hadoop
怎么
用
...
赞
踩
article
iphone
&
ipad
刷
机
_
苹果
手机
刷
机
要
id
密码吗 贴吧...
刷
机
之前需要提醒大家的是:
刷
机
有风险,需谨慎。 尤其是
苹果
刷
机
之前先要确定的几件事:一是先要确定自己的
手机
有没有
id
锁(...
赞
踩
article
【
Python
】
PyArmor
使用案例:
保护
您
的
Python
代码
,
Python
代码
混淆...
假设我们有一个简单
的
Python
脚本
,
它读取配置文件中
的
密码信息。这是一个常见
的
操作
,
但如果您
的
代码
泄露
,
它可能会暴...
赞
踩
article
基于
Python
+
Hadoop
的
气象
天气分析
大屏
可视化
系统设计与实现_天气
可视化
大屏
...
今天带来的是基于
Python
+
Hadoop
的
气象
天气分析
大屏
可视化
系统,针对
气象
分析
大屏
可视化
等问题,对
气象
进行研究分析...
赞
踩
article
Ctfshow
web
入门
代码
审计
篇
web
301
-
web
310 详细题解 全_
ctfshow
w...
Ctfshow
web
入门
代码
审计
篇
web
301
-
web
310 详细题解 全_
ctfshow
web
301
ctfsh...
赞
踩
article
Wagtail
-基于
Python
Django
的内容
管理系统
CMS实现公网访问_
python
cms...
Wagtail
是一个用
Python
编写的开源CMS,建立在
Django
Web框架上。
Wagtail
是一个基于Djang...
赞
踩
article
Docker
容器内不能联网的6种
解决方案
_
armbian
zerotier
无法访问
doker 内应...
Docker
容器内不能联网的6种
解决方案
注:下面的方法是在容器内能ping通公网IP的
解决方案
,如果连公网IP都ping...
赞
踩
article
新来
的
00
后
也太卷了吧
,
进厂起薪就有
18K
?...
都说
00
后
躺平了
,
但是有一说一
,
该牛
的
还是牛。新来
的
00
后
也太卷了吧
,
进厂起薪就有
18K
? &...
赞
踩
article
干货 :基于
机器
学习
的
文本
分类
...
Datawhale干货 作者:李露,西北工业大学,Datawhale优秀
学习
者据不完全统计,网民们平均每人每周收到的垃圾...
赞
踩
相关标签
python
开发语言
gpu
prompt
算法
语言模型
自然语言处理
人工智能
数据库
java
restful
后端
业界资讯
创业创新
程序员创富
redis
Win10安装配置Redis
Redis修改密码
tomcat
架构
容器
Servlet
flask怎么连接Oracle
es
网络