初识微服务

简介: 初识微服务

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



单体架构

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天前
|
消息中间件 Dubbo Java
微服务
【10月更文挑战第1天】微服务是一种将大型应用分解为小型、独立服务的设计理念,每个服务负责单一业务功能,独立部署、运行,通过轻量级通信机制(如HTTP API或RPC)互联。相比单体应用,微服务提高了部署效率、团队协作效能和系统可用性,但也增加了系统复杂性、通信开销和数据一致性管理的难度。实现微服务架构涉及服务拆分、服务发现、配置管理、服务治理、数据一致性、安全性、监控与日志、持续集成与部署等多个方面。
35 4
|
3月前
|
运维 Kubernetes Docker
微服务的成本效益分析
【8月更文第29天】随着微服务架构的流行,越来越多的企业开始考虑采用这一架构模式来构建他们的应用程序和服务。然而,迁移到微服务并非没有代价。本文旨在评估采用微服务架构所带来的成本增加与收益,并探讨如何优化资源使用,以最大化成本效益比。
312 0
|
5月前
|
存储 分布式计算 Dubbo
微服务是什么?
微服务是小型独立的服务,每个服务聚焦单一功能,代码量少,复杂度低。与单体架构相比,微服务强调团队小规模,服务独立开发、部署,数据存储方式和部署方式也不同。微服务架构允许使用不同语言和工具,具有良好的可扩展性和与Docker的兼容性。常见的Java微服务框架有Spring Cloud、Spark和Dubbo。
|
6月前
|
负载均衡 Java Nacos
严刑拷打_微服务
严刑拷打_微服务
|
6月前
|
XML JSON API
微服务是什么
微服务是什么
52 0
|
6月前
|
Dubbo Java 应用服务中间件
微服务知识
微服务知识
|
缓存 监控 应用服务中间件
你了解微服务吗?什么是微服务
现在很多公司,例如 Amazon、阿里 和Netflix,已经通过采用称为微服务架构模式的方式解决单体地狱问题。与其构建一个庞大的单体应用程序,不如将您的应用程序拆分为一组更小的、相互连接的服务。
169 0
你了解微服务吗?什么是微服务
|
存储 缓存 SpringCloudAlibaba
什么是微服务
自2014年起,微服务架构由Martin Fowler、Adrain Cockcroft、Neal Ford等人接力进行介绍、完善、演进、实践后,一直维持着较高的热度直到现在,内容如下:
|
自然语言处理 搜索推荐 微服务
了解微服务
微服务是与之前的服务化思路和实践相比较而来的。早些年的服务实现和实施思路是将很多功能从开发到交付都打包成一个很大的服务单元(一般称为Monolith),而微服务实现和实施思路则更强调功能趋向单一,服务单元小型化和微型化。
135 0
了解微服务
|
负载均衡 Dubbo 网络协议