• 技术选型

技术选型是一件很重要的事情。技术选型的原因

  1. 降低开发成本
  2. 提高开发效率

编程语言排行

今天9月份推出的jdk17版本了。

2.微服务架构产生

架构的历史包括如下几个时代

  • 第一代单体应用

把所有的应用都打包为一个war包到tomcat下运行,这种模式叫做巨石因公

  • 第二代SOA(Service Oriented Architecture)

面向服务架构,它是一种设计方法,服务间使用松耦合

缺点:1.ESB没有从根本上解决巨石应用的一些问题

2.SOA更多的面向企业服务,服务拆分颗粒度很大,更多的是为了复用。

  • 第三代 微服务

微服务是去中心化的SOA拓展,它强调服务彻底的组件化,一个组件就是一个产品,服务切分力度隔尿,设计上更多的是自下而上的。服务间通过轻量级的通信协议,并根据服务本身进行单独部署。

思维区别:

SOA自上而下,从运维视角出发,更多聚焦可维护性,兼顾可扩展性,从前后端分离切入。

微服务,是自下而上,从产品视角出发。

3.微服务分层架构图

微服务从整体式分5层:为前端、接入层、网关、服务、存储。

前端:是系统与人交互的层面,

接入层:负载均衡和反向代理层

网关层:对服务网关配置,对服务授权,进行治理,过滤,路由等。

服务:具体的业务服务和基础服务(比如邮件、文件、消息等)

存储层:保存业务层的数据,比如数据库,文件存储服务。

4.架构环境构建

各种工具搭建复杂,

Spring boot 工具

  1. 方便的创建可独立运行的spring应用程序
  2. 直接内嵌tomcat
  3. 简化项目的构建配置
  4. 为spring 以及第三方库提供自动配置
  5. 提供生产级特性
  6. 无需生成代码或进行xml配置

netflix 热衷开源

  1. 将自己的解决方案建立为行业标准和最佳时间
  2. 建立netflix技术品牌
  3. 雇佣、留住顶级工程师
  4. 从共享生态中获得反馈输入并受益

spring clooud家族

spring cloud config配置管理工具

spring cloud bus 事件、消息总线

spring cloud stream 中间件消息发送接收封装

spring cloud gatewary 新一代分布式网关

数据访问层技术选型

  1. JDBC

JDBC的烦恼,

1)数据库连接如何管理?

如果不管理数据库连接引发的问题包括:连接混乱;导致连接池不够用;锁死数据库;内存溢出等。

当前大部分都是使用连接池进行管理。

2)数据库查询数据和java对象如何高效映射

spring jdbctemplate要优于其它框架(mybatis、Spring JPA、hibernate等)大概20%的性能。

  1. Mybatis

Mybatis:我的sql我做主。

Mybatis Plus:你的sql你做主,我为你服务。

理论上上sql语句应该由专门的数据库人士处理更专业。

具体要看实际需要而定。

mybatis的层次结构

从图中可以得出:

首先由SqlSessionFactoryBuuilder来加载mybatis配置信息来创建SqlSessionFactory。

SqlSessionFactory来创建回话对象SqlSession

SqlSession创建Executor执行器来执行sql

StatementHandler来处理状态包括参数处理和返回结果集处理

typeHandler来处理jdbc返回的结果集。

  1. 数据库连接池选型
  2. 1.jdbc连接池,解决需要自己手动建立连接、关闭连接、连接复用的问题。连接池有有个标准的接口 javax.sql。DataSource,常用的连接池如下
  3. HikariCP是Spring boot的默认连接池,号称性能最好的数据库连接池。
  4. 从性能上Druid与HikariCP相差不大,但是Druid更多的支持功能。

消息中间件选型

mq消息中间件选型

消息队列:在消息的传输过程中保存消息的容器生产者和消费者不直接通信,依靠队列保证消息的可靠性,避免系统间的相互影响。

消息的过程如下图

消息分为P2P:点对点的模式以及订阅模式。

P2P:生产者将消息点对点的发送给指定的消费者

订阅模式:生产者将消息发布在主题上,只要订阅了该主题的消费者都能接收到。

各种mq的框架

kafka从去年20年开始新版本可以不依靠zookeeper了。

技术的选型除了框架本身的参数外还需要考虑

  1. 本身团队的能力
  2. 当前项目的实际需求
  3. 组件的稳定性

RoketMQ

从图中的可以得出:生产者在发送消息之前需要先向nameserver请求master消息服务器,然后向master发送消息

远程通信框架选型

远程通信框架(RPC)运行期状态

1)调用方首先向注册中心请求,得到有哪些服务可用,根据得到的服务选择一个调用

2)调用通过远程调用调用服务提供方,主要包括

调用发起->寻址路由->协议适配/序列化-网络传输

远程通信框架的技术点

发布和引用方式:http

通信协议:是7层,还是4层,在不同的层次的协议是不一样的。

Feign框架的调用流程分析

常用的远程通信框架

网关层的技术选型

网关的由来

  1. 微服务体用的api的颗粒度通常与客户所需的颗粒度不同
  2. 不同的客户端需要不同的数据
  3. 微服务实例数量及其位置(主机+端口)动态变化
  4. 服务划分会随着时间的推移而变化,网关可以屏蔽和处理这些变化,不需要在应用系统来处理这些变化。
  5. 服务可能会使用多种协议,有些是非web有好协议

网关的分类

按照职责划分:通常分为流量网关和业务网关。

流量网关:关注稳定和安全功能包括

全局性流控

防止web攻击

按照API网关部署形式划分为单节点网关和多节点网关。

主要的开源网关有

Nginx+Lu主要是流控网关。

网关的定义以及功能

API网关的技术选型

从使用成熟度,

Spring Cloud 自身的gateway原理解析

gateway的流程

孤尽T31之技术选型相关推荐

  1. T31项目架构选型方案

    服务选型 曾经的技术选型 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GjyeLuSg-1636378253985)(C:\Users\Zyf\Desktop\T31 ...

  2. 孤尽T31项目第6天-Java项目工程结构规约

    文章目录 前言 一.应用分层 1. 分层的目的 2. MVC框架模式 3. 推荐的分层结构 4. 分层的异常处理 5. 分层数据模型 二.Maven管理 1. Maven的作用 2. 构建 3. Ma ...

  3. 孤尽T31项目Day26

    孤尽T31项目Day26 系统健壮性设计 1 代码评审 什么样的是烂代码(人的视角) 维护者脏话的频率高 维护者脏话的类型丰富 存在打架斗殴的可能性 面向离职编程 什么是烂代码(代码视角) 不遵守代码 ...

  4. 前端技术选型的遗憾和经验教训

    我是Max,Spectrum的技术联合创始人.Spectrum 是一个面向大型在线社区的开源聊天应用程序,最近被GitHub收购.我们是一个三人团队,主要拥有前端和设计背景,我们在这个项目上工作了近两 ...

  5. 宅家学习,如何进行Kubernetes Ingress控制器的技术选型?

    导语:在Kubernetes的实践.部署中,为了解决 Pod 迁移.Node Pod 端口.域名动态分配等问题,需要开发人员选择合适的 Ingress 解决方案.面对市场上众多Ingress产品,开发 ...

  6. 小米资深工程师瞿晋萍(男):米聊服务器的技术选型和架构设计

    小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 - 资讯频道 - CSDN.NET 小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 2012-07-07 11:04 | 238次阅读 | ...

  7. 银行背景下分库分表技术选型

    业务持续增长带来的单表数据量过大,必然影响到数据库的读写性能,那到底要不要分库分表呢? 阿里巴巴P3C规范给出一个推荐: [推荐]单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表. 说 ...

  8. 从数仓到数据中台,谈技术选型最优解

    本文根据颜博老师在[Deeplus直播第218期]线上分享演讲内容整理而成. 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人,曾供职于京东.IBM.亚信等公司. 数据行业老兵一名,历经传统数据 ...

  9. 麦司机博客项目技术选型-Java后端

    麦司机博客项目 博客主页:maisiji.cn/ github地址:github.com/fendoudebb/- Java后端技术选型介绍 SpringBoot: 后端框架 项目主页: spring ...

最新文章

  1. HBASE+Solr实现详单查询--转
  2. 汉塔克问题(C语言递归)
  3. vue-awesome-swiper使用
  4. [蓝桥杯][基础练习VIP]报时助手
  5. linux errno定义
  6. OpenSSL 创建自签名证书
  7. wpf 网易云歌词_网易云音乐粉丝半年涨500万,隔壁老樊为何成今年乐坛最大黑马 | 案例池...
  8. 190104每日一句
  9. 第四章 可靠的请求-应答模式
  10. python黑客编程-[分享]Python黑帽子 黑客与渗透测试编程之道PDF和文章内代码【全】...
  11. 新中大银色快车数据恢复
  12. 什么是网络操作系统?网络操作系统具有那些基本功能?
  13. 局域网ip扫描工具_IP Scanner Pro——ip局域网扫描工具
  14. LLVM 学习(二) -LLVM IR 语法理论学习
  15. vue 统计中英文字符串长度_Ant Design Vue实现区分中英文分全角/半角字符长度校验功能...
  16. 【Python数据分析与处理 实训01】 ---- 菜品订单信息分析(数据了解及简单统计)
  17. Oracle EBS MRP模块之预测冲减
  18. spark日志中 Tid是什么
  19. 九龙证券|300亿空袭,港股吓懵了!
  20. unity-摄像机跟随

热门文章

  1. 阿里云服务器申请过程记录
  2. 快手爬票(爬取火车票信息)
  3. Python很慢?Python之父一句话亮了
  4. 系统分析师真题2020试卷相关概念二
  5. 关于TI账号注册卡在机器人验证那一步
  6. 计算机专业的有关的外文文献,【计算机专业外文翻译文献翻译最终版材料】
  7. 冯宗红老师【会议管理】晨会这样开 员工干劲足!
  8. Unity改变图片文本颜色
  9. 实践:腾讯云IM搭建应用内类微信社交聊天模块
  10. 九号公司遭红杉小米顺为减持:半年共套现6.5亿元