微服务,中间件,组件概念及区别

微服务

微服务是一种用于构建应用的架构方案。微服务是松散耦合的分布式架构框架,因此一个团队的更改不会破坏整个应用。使用微服务的好处是,开发团队能够快速构建应用的新组件,以满足不断变化的业务需求

举例
ZeroC Ice Grid、Dubbo、Spring Cloud

中间件

定义
中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。
举例来源
1、 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务
2、 VipServer- RPC框架:微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC
3、 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ
4、 缓存服务: 分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache
5、 配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf
6、分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF
7、任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP
8、 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。

组件

组件的最大意义在于封装重复的工作,其次是可以扩充现有组件的功能。

区别

一、应用场景

  1. 微服务

    团队规模较大,超过10人;
    业务复杂度高,超过5个以上的子模块(业务功能较复杂);
    项目需要长期迭代开发和维护(半年以上)

  2. 中间件

    1)、进行系统解耦
    例如 A 系统给B系统发消息 A系统给C系统发消息,为了系统A 不在随意修改,则可以 A 系统发消息给消息中间件,消息中间件转发消息给 系统 B 系统C,也方便后面需要添加系统D,进行信息交互,如果将来很多系统进行信息交互时,则可以考虑添加消息中间件进行消息转发。

    2)、消息异步处理时
    A 系统 发消息给B,B 进行消息处理,不用及时回复A,则可以考虑加消息中间件,A 只管发消息给中间件,B从中间件中取出消息进行处理返回给A,消息中间件进行消息缓存,B异步读取处理。

    3)、大量请求需要屏蔽情况下,比如秒杀活动,排队等
    如开启某个秒杀活动,会有大量请求消息,如果服务器处理所有消息请求显然是不合理,秒杀结果只有少数人能得到,多数人是无效请求,中间件缓存请求,后端服务器只需要取部分请求处理即可。

  3. 组件

    将一个单一工程的项目,分解成为各个独立的组件,然后按照某种方式,任意组织成一个拥有完整业务逻辑的工具

二、优缺点

  1. 微服务

    优点:
    快速响应变更,得益于单一职责和独立部署
    独立拓展,边界清晰,不过度受制于技术栈
    精粒度业务控制,降级熔断,局部限流
    不依赖数据模型,易于抽象,面向业务/领域模型
    缺点
    部署结构复杂,模块众多,一堆额外组件
    依赖平台支撑,依赖微服务组件,研发成本较高
    分布式问题,一致性,异常补偿
    拆封水平要求较高,粒度过粗/过细

  2. 中间件

    优点
    复杂系统的解耦
    复杂链路的异步调用
    瞬时高峰的削峰处理
    缺点
    系统可用性降低)
    系统稳定性降低
    分布式一致性问题

  3. 组件

    优点
    组件更加清晰直观
    组件关系更加清晰
    结果可以预测
    缺点
    最小化了重绘(diff算法)
    避免了不必要的dom操作

  • 18
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是我推荐的几个Java微服务实战项目: 1. Spring Cloud微服务电商项目:这是一个完整的电商应用程序,使用Spring Cloud实现微服务架构。它包括注册中心、配置中心、网关、商品服务、订单服务、用户服务等多个微服务模块,涵盖了大部分微服务技术点。 2. 微服务在线教育项目:这是一个在线教育平台,使用Spring Cloud实现微服务化。它包括注册中心、配置中心、网关、用户服务、课程服务、订单服务等多个微服务模块,同时还使用了分布式事务解决方案Seata,涵盖了分布式事务相关技术点。 3. 微服务电影购票项目:这是一个电影购票应用程序,使用Spring Cloud实现微服务化。它包括注册中心、配置中心、网关、影院服务、电影服务、订单服务等多个微服务模块,同时还使用了Spring Cloud Stream实现消息驱动,涵盖了消息驱动相关技术点。 希望这些项目对您有所帮助! ### 回答2: 在Java开发领域,有几个热门的微服务实战项目可以推荐。 首先,Spring Cloud是目前非常流行的微服务框架之一。它是基于Spring Boot构建的,提供了一套完善的微服务解决方案。推荐的一个实战项目是使用Spring Cloud搭建一个电子商务平台。该项目模拟了一个完整的电商系统,包括用户管理、商品管理、订单管理等功能。通过这个项目,你可以学习到如何使用Spring Cloud实现服务注册与发现、服务间通信、负载均衡等微服务相关的知识。 其次,Quarkus是一种新兴的微服务开发框架,它专注于减小应用程序的资源消耗和启动时间。推荐的一个实战项目是使用Quarkus构建一个在线投票系统。该项目可以让用户创建投票活动,并允许其他用户参与投票。通过这个项目,你可以学习到如何使用Quarkus开发快速、高效的微服务应用。 最后,Micronaut是另一个快速、轻量级的微服务框架。它提供了许多与Spring Boot类似的特性,但更加注重性能和资源利用率。推荐的一个实战项目是使用Micronaut构建一个在线博客平台。该项目包括博客的创建、发布、评论等功能。通过这个项目,你可以学习到如何使用Micronaut开发高性能的微服务应用,以及如何利用其注解驱动的开发模式提高开发效率。 总之,以上推荐的实战项目都可以帮助你深入了解Java微服务的开发实践和常用工具。无论你选择哪一个项目,都应该注重实际动手实践,通过编码和调试来加深对微服务开发的理解。 ### 回答3: 有许多值得推荐的Java微服务实战项目,以下列举几个较为常见的: 1. Spring Cloud Netflix:Spring Cloud Netflix是基于Spring Cloud开发的一套微服务项目实战框架,包含众多组件,如Eureka(服务注册与发现)、Ribbon(负载均衡)、Hystrix(断路器)等,帮助开发者快速构建可扩展的微服务架构。 2. Spring Boot + Docker:结合Spring Boot和Docker可以轻松构建可部署的微服务。使用Spring Boot可以方便地创建独立的、生产级别的Spring应用程序,而Docker则提供了环境隔离和轻量级部署的特性,使得微服务的部署和管理更加便捷。 3. Apache Dubbo:Apache Dubbo是一种高性能、轻量级的Java微服务框架。它支持多语言、多协议的微服务调用,具有服务注册和发现、负载均衡、服务容错等核心功能,适用于大规模的分布式系统。 4. Spring Cloud Alibaba:Spring Cloud Alibaba是Spring Cloud与阿里巴巴集团开发的一套微服务工具链,基于Spring Cloud实现了服务注册与发现、配置中心、消息总线等功能。该项目与阿里巴巴的一些开源产品(如Nacos)深度集成,为开发者提供了更多的选择。 无论选择哪个Java微服务实战项目,了解微服务架构的基本概念和原则是必要的。此外,熟悉分布式系统的设计和开发经验以及相关的技术栈(如数据库、消息中间件等)也是必备的。最重要的是,选择的项目要与自己的实际需求相符,并具备社区支持和活跃度,以便在遇到问题时能够得到及时的帮助和解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值