微服务初始

news2024/11/23 18:29:46

今天准备开始学习微服务,使用微服务肯定是因为他有好处。

首先了解到的三种架构,传统单体,集群架构,微服务架构

单体架构

  1. 有单点问题,如果宕机所有的服务都不可用
  2. 所有业务的功能模块都聚集在一起,如果代码量多,功能之前如果有很多共同的代码,不同业务的需求开发同时进行的时候,维护起来有点麻烦
  3. 由于是单体,对请求的并发量,有限制,一个tomcat,并发量千级左右
  4. 由于代码都聚集在一起,部署慢
  5. 修改bug,牵扯的可能性的代码有很多,修个bug可能需要把所有功能模块都测试一遍
  6. 扩展成本高,根据单体架构图  假设用户模块是一个CPU密集型的模块(涉及到大量的运算)那么我们需要替换更加牛逼的CPU,而我们的订单模块是一个IO密集模块(涉及大量的读写磁盘),那我们需要替换更加牛逼的内存以及高效的磁盘。但是我们的单体架构上 无法针对单个功能模块进行扩展,那么就需要替换更牛逼的CPU 更牛逼的内存 更牛逼的磁盘  价格蹭蹭的往上涨。
  7. 前后端不分离,后端开发人员可能要具备相应的前端知识

 适用于:

  1. 业务稳定,运行稳定,就是修修bug ,改改数据
  2. 迭代周期长 发版频率 一二个月一次.

集群架构

集群架构只是改善了,单体架构的单点故障问题和提高请求的并发数,并通过ngnix负载均衡

 微服务

微服务核心就是把传统的单机应用,根据业务将单机应用拆分为一个一个的服务,彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个一个的小服务就是 微服务. 

微服务拆分原则:

  1. 单一微服务高内聚,微服务之间低耦合,避免出现双向依赖,环形依赖,避免微服务之间频繁调用
  2. 根据业务模块划分,对数据库进行拆分
  3. 针对应用性能拆分,比如有些功能是CPU密集型应用,如对大量数据进行频繁计算的模块,对硬件要求比较高,有些是IO密集型的对硬件成本要求不高的,如文件上传,下载服务
  4. 应循序渐进的进行拆分,避免应用实例爆发式的增长,对部署,测试都有一定的压力,可以先把一些非核心业务进行依次拆分,也避免影响日常的需求迭代
  5. 服务接口要具备可拓展性,微服务之间的调用接口参数应用统一对象来进行传参,必要时对对象添加泛型的支持,统一的序列化和反序列化方式
  6. 服务拆分粒度要适中,拆分粒度不是越细越好,粒度需要符合弓箭原理及三个火枪手原则弓箭原理就是业务复杂度越高,团队人员越多,拆分出来的微服务可以越多三个火枪手原则是,一个微服务2-3个人开发维护最合适

优点:

  1. 每个服务足够小,足够内聚,代码更加容易理解,专注一个业务功能点(对比传统应用,可能改几行代码 需要了解整个系统)
  2. 开发简单,一个服务只干一个事情。(加入你做支付服务,你只要了解支付相关代码就可以了)
  3.  微服务能够被2-5个人的小团队开发,提高效率
  4. 按需伸缩
  5. 一个服务可用拥有自己的数据库。也可以多个服务连接同一个数据库.

缺点:

  1. 增加了运维人员的工作量,以前只要部署一个war包,现在可能需要部署成百上千个war包 (k8s+docker+jenkis )
  2. 服务之间相互调用,增加通信成本
  3. 数据一致性问题(分布式事物问题)
  4. 系能监控等,问题定位


微服务的适用场景

  1. 大型复杂的项目
  2. 快速迭代的项目
  3. 并发高的项目
     


版权声明:本文借鉴CSDN博主「为爱停留」的原创文章。
原文链接:https://blog.csdn.net/beiduofen2011/article/details/124101900

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

POSTGRESQL PERPARE 事务提交方式,到底用还是不用

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

单Bank OTA升级:STM32G071 APP (二)

接上一篇文章:单Bank OTA升级:STM32G071 BootLoader (一):跳转链接 什么是单Bank升级:将Flash划分为以下3个区域。 BootLoader区:程序进行升级的引导程序,根据Upade_Flag来判断跳转Bank区运行程序或是接收…

spring复习:(52)注解方式下,ConfigurationClassPostProcessor是怎么被添加到容器的?

进入AnnotationConfigApplicationContext的构造方法: 进入AnnotatedBeanDefinitionReader的构造方法: 进入this(registry, getOrCreateEnvironment(registry));代码如下: 进入AnnotationConfigUtils.registerAnnotationConfigProcessors方…

贤鱼的刷题日常(数据结构栈学习)-1696:波兰表达式--(递归+栈双题解)题目详解

🏆今日学习目标: 🍀例题讲解1696:波兰表达式 ✅创作者:贤鱼 ⏰预计时间:25分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c 🍁贤鱼的个人社区,欢迎你…

MySQL用户管理详解

文章目录 用户管理创建用户更改密码mysql的权限分类授权实例撤销权力 mysql检查顺序相关文件信息 用户管理 创建用户 在MySQL中,创建用户是管理和授权数据库访问权限的重要操作。下面是创建用户的详细步骤: 连接到MySQL服务器:使用MySQL客户…

人员定位安全管控系统:提升安全管理水平的智能解决方案

在当今社会,人员安全管理成为各行各业关注的焦点。为了保障人员的安全和提高管理效率,人员定位安全管控系统应运而生。 人员定位安全管控系统采用多种定位技术来实现对人员位置的准确定位,如GPS(全球定位系统)、Wi-Fi…

强化学习论文《Deep Reinforcement Learning that Matters》笔记

文章目录 1. 简介2. 实验分析超参数网络架构Reward ScaleRandom Seeds and TrailsEnvironmentCodebases 3. Reporting Evaluation MetricsOnline view vs. Policy OptimizationConfidence BoundsPower AnalysisSignificance 4. 结论5. 参考资料 1. 简介 这篇2017年的论文 是强化…

【PHP】phpstudy添加的网站,访问出现 嗯… 无法访问此页面

使用phpstudy创建网站,只有localhost可以访问, 其他所有网站无法访问,可能是你的账户没有修改vhost的权限 找到 C:\Windows\System32\drivers\etc下的vhost文件, 1、右键属性 将只读去掉 2、把用户对此文件的控制权限全部勾上 …

解决直播间源码音视频不同步问题的有效方式

随着网络技术的发展和移动设备的普及,电视、电脑、手机等数码产品越来越智能,我们不管是在家或是在外面都可以运用不同的数码产品去看剧或是短视频等,但可能很多人遇到过这样一种情况:当我们在看剧或是短视频的时候,可…

微信小程序可输入弹窗

addWhite() {wx.showModal({title: 添加白名单,editable: true, // 可输入content: ,complete: (res) > {if (res.confirm) {if (!res.content) { // 输入的值wx.showToast({title: 请填写白名单,icon: error})this.addWhite()}else {// 调接口}}}})},

Linux命令-按照与使用(17)(转载)解决同一台服务器上部署多个tomcat的同一个项目session冲突问题...

———————————————— 版权声明:本文为CSDN博主「strive_or_die」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/strive_or_die/article/details/103191546…

EXCEL模板如何自定义并使用?

文章目录 0.引言1.新建EXCEL2.EXCEL另存为模板3.使用模板 0.引言 使用Excel模板可以帮助用户更高效地处理和分析大量数据,简化重复任务,并提供清晰直观的数据可视化效果。对于需要频繁进行数据处理和分析的个人或组织来说,使用Excel模板是一个…

半导体自动化专用除静电设备的特点和功能

半导体自动化专用离子风机是一种用于半导体制造过程中的特殊风机设备。它通过产生带电粒子(离子)的气流来实现静电去除和除尘,以确保半导体制造环境的洁净和无尘。 以下是半导体自动化专用离子风机的一些特点和功能: 1. 静电去除…

听GPT 讲K8s源代码--pkg(七)

k8s项目中 pkg/kubelet/config,pkg/kubelet/configmap,pkg/kubelet/container,pkg/kubelet/cri 这几个目录处理与 kubelet 配置、ConfigMap、容器管理和容器运行时交互相关的功能。它们共同构成了 kubelet 的核心功能,使其能够在 …

在外远程查看家里内网监控

在外远程查看家里内网监控 现代生活节奏紧张,巨大的压力压得我们喘不过气来,因此很多人选择在家里养一只陪伴我们的宠物,用以舒缓紧张的情绪和繁重的压力。但养了这些小家伙后,不在家时又总想随时看看家里小可爱们的情况&#xf…

STL:双端队列容器适配器仿函数优先级队列

deque 双端队列可以在头部和尾部进行插入删除操作与vector相比,头插效率高,不需要搬移元素 与list相比,空间利用率高 deque逻辑上空间是连续的,物理上并不是,是由一段段小空间拼接而成的 双端队列的迭代器比较复杂 cur…

Python爬虫技术及其原理详解

概要 随着互联网的发展,大量的数据被存储在网络上,而我们需要从中获取有用的信息。Python作为一种功能强大且易于学习的编程语言,被广泛用于网络爬虫的开发。本文将详细介绍Python爬虫所需的技术及其原理,并提供相关的代码案例。 …

Python—数据结构(一)

先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…

php基于redis处理session的方法

php基于redis处理session的方法 一个基于redis的处理session的方法,如下: class Session_custom { private $redis; // redis实例 private $prefix sess_; // session_id前缀 // 会话开始时,会执行该方法,连接redis服务器 p…

【JVM】JVM执行流程 JVM类加载 垃圾回收机制等

目录 🌷1、JVM是什么? 🌷2、JVM的执行流程(能够描述数据区5部分) 🌷3、JVM类加载过程 🌷4、双亲委派机制:描述类加载的过程 问题1:类加载器 问题2:什么…