初识微服务

简介: 初识微服务

单体架构与微服务架构的区别



单体架构

1688992745502-af6d58bd-27bb-46df-87aa-c3d4dd05eaff.png


将所有的业务功能都集中在一个项目中开发, 打包成一个包部署。


优点: 就是成本低, 架构简单


缺点: 耦合度极高


微服务架构


1688992835763-75903c12-f007-44ce-aedb-77ab1e2473eb.png

根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。


优点: 降低服务的耦合; 有利于升级拓展项目


这样的微服务架构的问题一:


业务越多 ,项目结构越复杂, 那么服务与服务之间的业务关系调用就会越来越复杂。


如此复杂的业务关系, 想要靠人来解决是不可能的, 所以微服务提供了一个组件—–注册中心


注册中心解决问题一


注册中心可以记录微服务中 ,每个服务的IP、端口、及其他们的作用(能干什么)


如果一个服务想要调用另一个服务,那么想要知道该服务的作用, 就直接找到他的注册中心就可以得到对应的服务信息。


出现的问题二: 多个服务引起的很多配置文件的修改问题


随着服务的增多, 配置信息也会海量的上升, 对于我们的管理是非常不利的。所以微服务提供了配置中心, 他可以管理这些服务中的所有配置


解决问题二 :配置中心解决。


配置中心可以管理所有我们的配置文件。


如果以后需要有配置进行变更, 我们只需要通知配置中心即可 。它可以通知相关的微服务,实现配置的热更新。


问题三: 微服务过多,用户访问的时候不知道访问哪个


微服务数量达到一定的数量 ,靠我们人为的去维护管理是不可能的, 同时也不是任何用户来都能够访问我们的服务。所以需要进行管理。


服务网关 解决问题三


服务网关可以实现对进入服务的用户身份进行认证管理


同时还可以将用户的请求 转发到具体的请求。(请求路由)


通过上述的服务网关, 我们就可以将得到的用户请求发送到对应的服务上, 然后服务就可以通过数据库等查询到对应的信息返回给用户。


问题四: 不可能所有的请求都访问数据库吧 ?


通过服务网关, 我们就可以将得到的用户请求发送到对应的服务上, 然后服务就可以通过数据库等查询到对应的信息返回给用户。


但是 ,这么多的请求, 这么多的服务。如果全部打到数据库上, 那么对于数据库的压力将是恐怖的。 所以我们需要将数据进行缓存。


分布式缓存解决问题四。


对于分布式的集群任务, 我们需要对应的缓存来缓解数据库的访问压力。所以就需要分布式缓存。


分布式集群的请求 ,先打到分布式缓存中, 缓存未命中,再访问数据库。


问题五: 分布式集群中的请求往往覆盖多个服务,如何解决 ?


对于分布式集群来说, 我们的请求可能需要调用不同的集群才能完成一个任务,那么如何处理分配这些请求的执行顺序(执行时间等等),如何分配这些时常,就是我们需要解决的问题。


如果无法很好的分配这些任务的执行 , 对于系统的性能是有极大影响的


消息队列解决问题五.


消息对列就可以很好的解决这些请求的调度。


提高服务的并发。


问题六: 服务出现问题如何解决。


如此庞大的集群, 一旦出现问题那将是致命的, 所以我们需要一些东西来维护定位,乃至追踪这些问题。 所以就引入了分布式服务日志 && 系统监控链路追踪。


分布式日志服务解决问题六


通过分布式日志服务, 我们可以解决对于出现问题的定位, 但是我们还需要监控来定位乃至观察这些服务的运行情况, 这就用到了系统监控和链路追踪


问题七: 微服务的部署


服务集群达到这样的量级, 如果还是通过人工部署那当然是不现实的, 所以就需要用到自动化集群的部署

Jenkins解决问题七


通过Jenkins来实现对微服务进行自动化的编译, 基于Docker进行打包形成镜像。再通过K8s 或者 RANCHER这样的技术实现微服务的集成部署。


微服务架构总结图


1688995010678-73ad042e-59b4-4d33-808f-125916f61358.png

1688995233004-a1f18a75-ce10-4ec2-b128-30f9f43add8e.png


微服务技术的划分



微服务治理SpringCloud


SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud


SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:


1688995099438-9fa692ec-1358-4262-bbd9-5bac8c343e63.png


分布式的缓存


1688995284927-778374c6-ff94-4acc-b669-71114e2f1d56.png


异步通信技术


1688995299497-7eb1f526-c055-4469-952d-36dc5acbef27.png


分布式搜索的技术


1688995330410-cce990a5-3093-4503-8edc-e61e16803894.png


持续集成DevOps技术


1688995366939-9d2715b3-bd76-4c96-a45e-4a521c92e5b9.png


hm的学习大纲


1688995589351-408af337-9032-4a67-9615-786f7b7e436d.png

1688995626482-72d19447-5678-46d9-9cec-5e9975d10745.png


1688995650922-a045dd11-ebef-4531-afe5-f26d8da50711.png


目录
相关文章
|
27天前
|
Java 数据管理 API
详解微服务
详解微服务
|
2月前
|
Dubbo Java 应用服务中间件
微服务知识
微服务知识
|
4月前
|
Cloud Native 数据管理 API
微服务介绍
微服务介绍
32 3
|
4月前
|
存储 消息中间件 监控
微服务
微服务是一种软件架构风格,将一个大型应用程序分割为一系列小型、独立的服务,每个服务都可以独立部署、升级和扩展。微服务架构的目标是提高系统的可扩展性和灵活性,使得每个服务可以根据需要进行独立的升级和扩展。微服务架构具有独立性、轻量级通信、分布式、高度可配置和自动化的特点,可以方便地实现模块化开发、组合交互和团队之间的协作与沟通。然而,微服务的分布式和高度可配置等特点也增加了系统的复杂性和维护难度。因此,在设计和实施微服务架构时需要充分考虑这些因素,以确保系统的稳定性和可用性。
|
8月前
|
存储 缓存 SpringCloudAlibaba
什么是微服务
自2014年起,微服务架构由Martin Fowler、Adrain Cockcroft、Neal Ford等人接力进行介绍、完善、演进、实践后,一直维持着较高的热度直到现在,内容如下:
|
存储 Java 应用服务中间件
对微服务的简单思考
对微服务的简单思考
|
负载均衡 前端开发 Java
浅析-微服务2
Zuul中默认就已经集成了Ribbon负载均衡和Hystix熔断机制。但是所有的超时策略都是走的默认值,比如熔断超时时间只有1S,很容易就触发了。
浅析-微服务2
|
存储 XML JSON
什么是微服务?
微服务架构介绍
141 0
什么是微服务?
|
负载均衡 Dubbo 网络协议
|
缓存 运维 监控
浅谈微服务
微服务兴起已经多年了,这几年已到大发展阶段。公司内部做了很多和微服务相关的事情,自己也看了一些微服务相关的内容。现在再来认识”微服务“三个字,终于有点懂了的感觉。

热门文章

最新文章