Day 9 技术选型

摘要

本文主要用来描述哪些方面需要选型以及如何选型。

背景

选型的目的

  1. 降低开发成本

  2. 提高开发效率

技术架构的分类

单体应用

缺点:

  1. 各模块之间耦合。任何一个更新可能会造成其它模块的 bug

  2. 不利于扩展。只能进行单维度扩展;当引入新的框架或语言时,需要重构所有业务模块。

SOA

缺点:

  1. ESB 成为 bottle neck

  2. 服务的拆分粒度太大。

微服务

将一个功能变成一个模块;是去中心化的SOA拓展。在设计上更多的是自下而上的。服务间通过轻量化的协议进行通信,并根据服务本身需要独立化部署。

技术选型

数据层选型

所有数据层都是为了解决两个问题:

  1. 数据库连接如何管理:手动管理会造成代码维护的压力。如果忘了关闭连接,会造成对数据存储层的压力。

  2. 数据库映射成 JAVA:

这里采用 MyBatis 解决这个问题。同时需要进行数据库连接池的选型。

消息中间件选型

中间件:两个业务模块的中间层。

消息:业务模块之间的传递的信息。

需求:模块之间处理信息的速度产生差异时,需要有一个容器进行暂时的存储。这个容器存储的是消息,并且在两个业务模块中间。所以叫消息中间件。

远程通信框架选型

远程通信框架:将远程调用方法当成是本地调用方法。

远程调用的核心:通过注册中心进行请求。注册中心负责服务的注册和发现。

这里采用的是 Spring Cloud 的 Feign

网关层选型

网关的必要性:

每个服务都需要进行 授权,流量控制,安全管理。这些属于重复代码。需要提取出来做单独管理。所以这里需要使用 网关。

网关分类:

流量网关:

关注稳定安全:进行全局性流控,防止 web 攻击,屏蔽工具扫描,黑白IP名单,证书/加解密操作。

业务网关:

目的在于提供更好的服务:服务级别流控,服务降级与熔断,路由与负载均衡,灰度策略,服务过滤、聚合与实现,多级缓存策略。

这里采用的是 SpirngCloud Gateway.

Spring 对架构的支持

Spring Boot

Spring Boot 用来管理依赖。省去了许多冗余代码。

Spring Cloud

Spring Cloud 中的组件能够为 微服务 提供更好的支持。使用 Eureka 进行服务的注册与发现。使用 Spring Gateway 作为网关。使用 Ribbon 进行负载均衡。以及使用 Feign 进行远程调用。

结论

技术栈选型涉及到多种原因。一部分原因来自于实际业务的需求,一部分原因来自技术本身的特点。如果要做到良好的技术选型,则需要首先对实际业务有较好的理解。并且对这些技术有深刻的认知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值