JavaWeb网站技术架构是怎样的

发布时间:2021-11-20 09:57:08 作者:柒染
来源:亿速云 阅读:122

这期内容当中小编将会给大家带来有关JavaWeb网站技术架构是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<p _hover-ignore="1" white-space:normal;background-color:#FFFFFF;">题记

  工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对比较零碎,随时补充(附带架构装逼词汇)。

  俗话说的好,冰冻三尺非一日之寒,滴水穿石非一日之功,罗马也不是一天就建成的,当然对于我们开发人员来说,一个好的架构也不是一蹴而就的。

  初始搭建

  开始的开始,就是各种框架一搭,然后扔到Tomcat容器中跑就是了,这时候我们的文件,数据库,应用都在一个服务器上。

JavaWeb网站技术架构是怎样的

  反向代理

JavaWeb网站技术架构是怎样的

  基于以上Nginx反向代理,我们还可以实现动静分离,静态请求如html、css、js等请求交给Nginx处理,动态请求分发给后端Tomcat处理。

  Nginx 升级到1.9.5+可以开启HTTP/2.0时代,加速网站访问。

  当然,如果公司不差钱,CDN也是一个不错的选择。

  服务拆分

  在这分布式微服务已经普遍流行的年代,其实我们没必要踩过多的坑,就很容易进行拆分。市面上已经有相对比较成熟的技术,比如阿里开源的Dubbo(官方明确表示已经开始维护了),spring家族的spring cloud,当然具体如何去实施,无论是技术还是业务方面都要有很好的把控。

  Dubbo

JavaWeb网站技术架构是怎样的

  负载均衡实现

  ·DNS负载均衡,一般域名注册商的dns服务器不支持,但博主用的阿里云解析已经支持

  ·四层负载均衡(F5、LVS),工作在TCP协议下

  ·七层负载均衡(Nginx、haproxy),工作在Http协议下

  分布式session

  大家都知道,服务一般分为有状态和无状态,而分布式sessoion就是针对有状态的服务。

  分布式Session的几种实现方式

  ·基于数据库的Session共享

  ·基于resin/tomcat web容器本身的session复制机制

  ·基于oscache/Redis/memcached 进行 session 共享。

  ·基于cookie 进行session共享

  分布式Session的几种管理方式

  ·Session Replication 方式管理 (即session复制) 简介:将一台机器上的Session数据广播复制到集群中其余机器上 使用场景:机器较少,网络流量较小 优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问 缺点:广播式复制到其余机器有一定廷时,带来一定网络开销

  ·Session Sticky 方式管理 简介:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上 使用场景:机器数适中、对稳定性要求不是非常苛刻 优点:实现简单、配置方便、没有额外网络开销 缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

  ·缓存集中式管理 简介:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息 使用场景:集群中机器数多、网络环境复杂 优点:可靠性好缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入

  目前生产中使用到的

  ·基于tomcat配置实现的MemCache缓存管理session实现(麻烦)

  ·基于OsCache和shiro组播的方式实现(网络影响)

  ·基于spring-session+redis实现的(最适合)

  负载均衡策略

  负载均衡策略的优劣及其实现的难易程度有两个关键因素:一、负载均衡算法,二、对网络系统状况的检测方式和能力。

  1、rr 轮询调度算法。顾名思义,轮询分发请求。

  优点:实现简单

  缺点:不考虑每台服务器的处理能力

  2、wrr 加权调度算法。我们给每个服务器设置权值weight,负载均衡调度器根据权值调度服务器,服务器被调用的次数跟权值成正比。

  优点:考虑了服务器处理能力的不同

  3、sh 原地址散列:提取用户IP,根据散列函数得出一个key,再根据静态映射表,查处对应的value,即目标服务器IP。过目标机器超负荷,则返回空。

  4、dh 目标地址散列:同上,只是现在提取的是目标地址的IP来做哈希。

  优点:以上两种算法的都能实现同一个用户访问同一个服务器。

  5、lc 最少连接。优先把请求转发给连接数少的服务器。

  优点:使得集群中各个服务器的负载更加均匀。

  6、wlc 加权最少连接。在lc的基础上,为每台服务器加上权值。算法为:(活动连接数*256+非活动连接数)÷权重 ,计算出来的值小的服务器优先被选择。

  优点:可以根据服务器的能力分配请求。

  7、sed 最短期望延迟。其实sed跟wlc类似,区别是不考虑非活动连接数。算法为:(活动连接数+1)*256÷权重,同样计算出来的值小的服务器优先被选择。

  8、nq 永不排队。改进的sed算法。我们想一下什么情况下才能“永不排队”,那就是服务器的连接数为0的时候,那么假如有服务器连接数为0,均衡器直接把请求转发给它,无需经过sed的计算。

  9、LBLC 基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近被使用的服务器,把请求转发之,若该服务器超载,最采用最少连接数算法。

  10、LBLCR 带复制的基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近使用的“服务器组”,注意,并不是具体某个服务器,然后采用最少连接数从该组中挑出具体的某台服务器出来,把请求转发之。若该服务器超载,那么根据最少连接数算法,在集群的非本服务器组的服务器中,找出一台服务器出来,加入本服务器组,然后把请求转发之。

  读写分离

  MySql主从配置,读写分离并引入中间件,开源的MyCat,阿里的DRDS都是不错的选择。

  如果是对高可用要求比较高,但是又没有相应的技术保障,建议使用阿里云的RDS或者Redis相关数据库,省事省力又省钱。

  全文检索

  如果有搜索业务需求,引入solr或者elasticsearch也是一个不错的选择,不要什么都塞进关系型数据库

  缓存优化

  引入缓存无非是为了减轻后端数据库服务的压力,防止其"罢工"。

  常见的缓存服务有,Ehcache、OsCache、MemCache、Redis,当然这些都是主流经得起考验的缓存技术实现,特别是Redis已大规模运用于分布式集群服务中,并证明了自己优越的性能。

  消息队列

  异步通知:比如短信验证,邮件验证这些非实时反馈性的逻辑操作。

JavaWeb网站技术架构是怎样的

  流量削锋:应该是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

  日志处理:系统中日志是必不可少的,但是如何去处理高并发下的日志确是一个技术活,一不小心可能会压垮整个服务。工作中我们常用到的开源日志ELK,为嘛中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。

  消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。

  日志服务

  消息队列中提到的ELK开源日志组间对于中小型创业供公司是一个不错的选择。

JavaWeb网站技术架构是怎样的

  队列

  ·任务队列

  ·消息队列

  ·请求队列

  扩容

  ·单体垂直扩容

  ·单体水平扩容

  ·应用拆分

  ·数据库拆分

  ·数据库分库分表

  ·数据异构

  ·分布式任务

  网络安全

  ·SQL注入

  ·XSS攻击

  ·CSRF攻击

  ·拒绝服务(DoS,Denial of Service)攻击

  架构装逼必备工具

  操作系统

  Linux(必备)、某软的

  负载均衡

  DNS、F5、LVS、Nginx、OpenResty、HAproxy、负载均衡SLB(阿里云)

  分布式框架

  Dubbo、Motan、Spring-Could

  数据库中间件

  DRDS (阿里云)、Mycat、360 Atlas、Cobar (不维护了)

  消息队列

  RabbitMQ、ZeroMQ、Redis、ActiveMQ、Kafka

  注册中心

  Zookeeper、Redis

  缓存

  Redis、Oscache、Memcache、Ehcache

  集成部署

  Docker、Jenkins、Git、Maven

  存储

  OSS、NFS、FastDFS、MogileFS

  数据库

  MySql、Redis、MongoDB、PostgreSQL、Memcache、HBase

  网络

  专用网络VPC、弹性公网IP、CDN

上述就是小编为大家分享的JavaWeb网站技术架构是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 什么是网站劫持
  2. Worktile 技术架构概要

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javaweb

上一篇:树莓派怎么启动自动连接WiFi

下一篇:如何理解Mysql Replication

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》