项目中网站的演变(技术栈罗列)

项目中网站的演变

根据吕一明老师的思维大图整理而来

项目开发常用部署工具

  • 常用部署工具:jenkins项目发布、svn(git)项目代码管理、linux服务器、maven项目管理
  • swagger2生成api接口文档、hibernate validator api数据验证
第一阶段
  • 物理分离应用服务器与数据库(jsp、ssh、ssm)
  • 两台服务器分别部署应用和数据库
  • 项目结构:业务 —-> 数据库
第二阶段
  • 增加页面缓存或页面静态化处理
  • 实用技术:模板引擎技术(freemarker、Thymeleaf等)
    jsp其实也是一种模板引擎技术,只是性能相对三方相比要差一些。其中jsp中写java脚本代码也难以维护,每次使用都需要重新编译比较烦,其他的模板引擎可以预先生成好直接使用,少去编译这一层更好的用户体验。
  • 项目结构:前端页面缓存 —> web服务 —-> 数据库
第三阶段
  • 增加后端数据缓存:redis、ehache 、 memcached
    redis、memcached比较,redis与memcached对分布式支持更好,ehache对分布式支持不太友好,目前运用最多的是redis
  • 项目结构:前端页面缓存 —-> web服务(此处添加数据缓存数据库做数据缓存,加快数据读取减小db压力) —–> 数据库
第四阶段


  • 应用集群负载均衡:keepalive(处理请求,减少资源消耗)、nginx(代理,负载均衡)、Apache(代理,负载均衡)、LVS

keepalive介绍

  • 集群seesion分享方案:1.通过nginx,每个用户请求服务器都为第一次请求进来的服务器(不能达到好的负载均衡的效果)。2.使用三方数据库redis、memcached做共享session(目前用的比较多)
  • 项目结构:项目结构:前端页面缓存 —-> web服务(此处添加数据缓存数据库做数据缓存,加快数据读取减小db压力,这里需要对seesioin进行处理) —–> 数据库
第五阶段


  • 页面静态化、分布式文件系统

页面静态化技术深入探究
大型网站之网站静态化综合篇
页面静态化使用一些模板技术,主要针对无修改或者修改不大的页面进行静态化

  • cnd加速
    网站建设(3)——CDN及CDN加速原理引导用户使用最近的服务器资源
  • 项目结构:在第四阶段上主要对服务进行加速,针对更大的用户并发量,更好的用户体验
第六阶段
  • 分布式缓存、缓存集群
  • 将数据缓存到多个nosql数据库中、做缓存集群
  • 缓存共享、哨兵机制

哨兵机制:redis集群配置,就是用过哨兵机制进行处理,其实就是各个服务器进行监控

第七阶段
  • 读写分离和分库分表(mycat中间件):读库和写库分开,减小数据库压力,也加快读取速度(网站其实多数时间在读数据)

Spring中AOP方式实现多数据源切换:本身Spring事务、数据源的控制都是依靠aop实现,所以只需要在aop中动手脚,根据一定规则切换不同数据源(不同数据库)即可
MyCAT实现MySQL的读写分离:在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修改,如果数据库不小心挂掉了,则同时也意味着程序的不可用,而这对很多应用来说,并不能接受。
MySQL主从复制(Master-Slave)实践:在读写分离的时候,就需要考虑数据同步的问题,其实本身mysql就带有主从复制的功能

第八阶段
  • 微服务架构:restful api、队列(Kafka, MQ)、spring boot、dubbo(阿里)+zookeeper、grpc、spring cloud(Spring社区提供的一套解决方案)

    微服务架构是目前来说大型网站如淘宝这些网站肯定是这种规模的,到达这一步那肯定你已经是大牛了。


RESTful 架构详解:个人理解其实就是一种思想
如何设计restful风格接口

各消息队列对比,Kafka深度解析

gRPC 官方文档中文版:我也第一次听说,就不多评价。大概看了一下是做远程调用管理的RPC系统

dubbo+zookeeper 与 spring cloud 都是做微服务治理的一种解决方案详细请自行百度了,现在已经很常见。(原谅我也只是简单的写过demo)

通过以上技术,目的就是分开各个模块,微服务其实个人理解就是将单例系统的各个模块分解成各个服务,增大服务的访问上限,减少模块之间的依赖,单模块死掉也不影响其他业务,当然也有不好的地方:同步、事务问题,还要就是管理维护成本

总结
  • 演变:单体架构 —> 垂直架构 —> SOA架构 —> 微服务架构
  • 说了这么多,说是一个网站的演变倒不如说是为了用户上限的体验技术的迭代。这也算是让自身努力的一个技术栈路途规划吧。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niubility锐

觉得有用的话鼓励鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值