深度理解微服务

Posted �欢快↑㎡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度理解微服务相关的知识,希望对你有一定的参考价值。

🥲 🥸 🤌 🫀 🫁 🥷  🐻‍❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 🫑 🫓 🫔 🫕 🦤 🪶 🦭 🪲 🪳 🪰 🪱 🐻‍❄️ 🫐 🫒 🫑 🫓 🫔 🫕

 ♔博主昵称:�欢快↑㎡

🕍博客主页:�欢快↑㎡的博客_CSDN博客-学习注意点杂记,BUG集,安装教程领域博主

⚇很方便的在线编辑器:Lightly

🥗感谢点赞🤞🏻评论🤞🏻收藏

相信吧!🤜🏻我们很优秀,还可以更加优秀,加油!🌼让我们一起在写作中记录巩固学习吧!


目录

微服务的优点,缺点是什么?

微服务优点:

微服务缺点:

微服务和单体项目区分:

高性能,高可用,高并发项目必须用微服务吗?

高可用:关键节点越少,可用性越高,可替代性节点越多,可用性越高

高性能:

高并发:

分布式id解决方案有那些?

主键自动加1 有 什么缺点?

单体项目

竟争对手获取数据(   id从1开始,容易被获取数据)

获取商业机密(相隔24小时分别注册一个账号,可以通过知道每天产生多少的订单)

分布式项目

实现分布式id

主键加1的优点是什么?

框架的高扩展如何实现?


微服务的优点,缺点是什么?

单体项目存在的问题(当然处于成本和效率来看,单体项目还是更有优势,一般开发,是会先采用单体项目,等到必要时才会再采用微服务)

  1. 只能使用一种技术(包括开发语言,框架技术)
  2. 有多个模块的情况下,一个模块不能独立上线
  3. 上线后,一个模块出了问题,别的模块也不能运行(模块之间耦合性比较高)

微服务优点:

  1. 可以使用不同的技术栈(包括不同开发语言开发的项目模块)
  2. 模块之间耦合性小,可以独立上线,独立部署,独立升级
  3. 每个模块可以独立运行,不会影响其他的模块
  4. 不同模块可以使用不同数量的服务器

微服务缺点:

  1. 整个体统复杂度变高
  2. 运维变难
  3. 数据一致性变难
  4. 单个微服务开发简单,开发效率提高,整个系统开发变复杂

微服务和单体项目区分:

微服务项目:多个微服务提供者+nacos+gateway+sentinel+链路跟踪

单体项目:一个系统的代码全放在一个project中(一般来说在开发中,就算把项目拆开,没有使用过微服务技术也算是单体项目)


高性能,高可用,高并发项目必须用微服务吗?

高可用:关键节点越少,可用性越高,可替代性节点越多,可用性越高

高性能:

  1. 用缓存
  2. 减少关键节点
  3. 设置cpu频率
  4. nginx进程与cpu内核进行绑定(进程结束的话可能会切换内核,降低效率)
  5. 调整linux,tomcat,mysql参数
  6. 读写分离
  7. 静态化

高并发:

  1. 使用高性能技术
  2. 集群
  3. 限流
  4. 消息对列
  5. 拆key
  6. 每隔一段时间同步一次(不要即时同步,并发量会倍数的)

分布式id解决方案有那些?

主键自动加1 有 什么缺点?

单体项目

  1. 竟争对手获取数据(   id从1开始,容易被获取数据)

  2. 获取商业机密(相隔24小时分别注册一个账号,可以通过知道每天产生多少的订单)

分布式项目

单表的数据不要超过5000万行可能会分库分表来解决

分库分表id可能会重复

实现分布式id

美团leaf是通过id段(号码段)分片提高并发

主键加1的优点是什么?

主键自动建立索引,速度快。

有了索引后,添加数据时,索引要修改,要移动索引

只有主键有索引,添加数据,索引不会发生移动


框架的高扩展如何实现?

  1. 多态implements接口或extends父类
  2. 加注解@RestController
  3. Aop切面,动态代理
  4. 责任链
  5. spi,反射
  6. 热部署
  7. 消息队列(开闭原则:可以用aop,多态)
  8. 注册中心

以上是关于深度理解微服务的主要内容,如果未能解决你的问题,请参考以下文章

深度理解微信签名

深度理解微信签名

深度理解微服务

DMZ

深度解读服务治理 & ServiceMeshxDS

焯!一份京东开源的微服务架构深度解析,竟让大厂人熬夜也要读完