推荐上海网站建设,地方同城网站开发,丹阳网站建设价位,常州孟河镇建设工程交易网站微服务系列#xff08;1#xff09;-我是谁
应用架构的演化
简单来说系统架构可以分为以下几个阶段#xff1a;复杂的臃肿的单体架构-SOA架构-微服务
单体架构及其所面临的问题
在互联网发展初期#xff0c;用户数量少#xff0c;流量小#xff0c;硬件成本高。因此…微服务系列1-我是谁
应用架构的演化
简单来说系统架构可以分为以下几个阶段复杂的臃肿的单体架构-SOA架构-微服务
单体架构及其所面临的问题
在互联网发展初期用户数量少流量小硬件成本高。因此企业会将系统的所有功能都集中在一起开发一个单体应用然后将应用部署在1台服务器上。
但单体架构根本不能适应大型项目debug非常困难程序健壮性差必须将系统拆开。拆分的结果就是出现了***分布式系统***分布式系统允许服务之间相互调用减轻了系统的耦合性此外分布式系统还引入了网关、缓存、消息队列等中间件大大提高了服务的稳定性。但分布式系统的调用关系复杂尤其是在集群化部署后负载均衡的配置更是一个很大挑战不同服务之间的协议不一样服务通信困难这也是分布式系统设计的难点之一为了解决服务之间的通信问题服务导向架构Service-Oriented ArchitectureSOA应运而生。
服务治理阶段SOA
在SOA架构中应用程序被划分为多个独立的服务每个服务负责一个特定的功能比如我们将原本的“仓库系统”拆分为“订单服务”和“库存服务”。SOA引入了企业服务总线ESB概念将基于不同协议的服务节点连接起来简单来说ESB的工作是做一个中间商其功能就是转换、解释消息和路由消息。
SOA架构最棒的地方在于解决了服务间的通信问题每一个服务只要按照预定的标准和ESB这个中间商通信即可大大提高系统的模块化、可扩展性和可维护性让程序员不再为多个协议之间互相转化苦恼。
SOA虽然解决了多个服务之间通信的问题但随着敏捷开发DevOps的发展服务会变更的更加迅速这就导致了服务的进一步更细粒度的拆分开发者也希望服务之间更松耦合毕竟我们都不想产生bug。逐渐的业务功能被划分的更小以至于一个服务只完成某项极小的任务微服务的概念由此开始。
微服务架构与云原生
微服务Microservices是一种软件架构风格它将一个大型应用程序划分为一组小型、松耦合的服务每个服务负责一个具体的业务功能。这些服务独立开发、部署和运行通常采用轻量级的通信协议如RESTful API或gRPC进行通信和协作。
在微服务部署时通常会引入一个服务注册与发现中心Service Registry and Discovery Center或者服务治理中心Service Governance Center来对服务进行统一的管理和调度。这个中心的主要作用包括
服务注册服务提供者将其提供的服务信息服务名ip端口注册到服务注册中心以便其他服务消费者可以找到并使用这些服务
服务发现服务消费者可以通过服务注册中心查询到所需的服务信息从而知道如何调用这些服务服务之间的调用不再使用ip:port方式而是使用服务名调用这样服务的ip一旦变更开发者也无需对服务进行改动
负载均衡服务注册中心可以根据服务提供者的负载情况为服务消费者提供合适的服务提供者地址实现负载均衡
故障转移当某个服务提供者出现故障时服务注册中心可以自动将服务消费者的请求转发到其他可用的服务提供者实现故障转移
监控和统计服务注册中心可以收集服务调用的统计信息以便对服务的性能、可用性和稳定性进行监控和分析
配置管理服务注册中心可以提供统一的配置管理功能以便对服务的配置信息进行集中管理和维护
安全管理服务注册中心可以实现服务的鉴权、授权和访问控制等安全功能以保障服务的安全性。 学习微服务的前提是要了解注册中心的概念。就我个人理解来说注册中心相当于是一个登记表服务将自己的的信息写入注册中心其他服务要调用的时候就去这张登记表中找自己要调用的服务的信息。相较于单体架构中开发者需要将要调用的服务的ip:port写入代码中微服务注册中心简直太方便了尤其适合使用k8s部署。