长春网站建设大概需要多少钱建站技术服务
长春网站建设大概需要多少钱,建站技术服务,甘肃省建设监理协会 官方网站,广告推广服务平台转载自 吃透这套架构演化图#xff0c;从零搭建Web网站也不难
前言工作也有几多年了#xff0c;无论是身边遇到的还是耳间闻到的#xff0c;多多少少也积攒了自己的一些经验和思考#xff0c;当然#xff0c;博主并没有太多接触高大上的分布式架构实践#xff0c;相对比较…转载自 吃透这套架构演化图从零搭建Web网站也不难
前言工作也有几多年了无论是身边遇到的还是耳间闻到的多多少少也积攒了自己的一些经验和思考当然博主并没有太多接触高大上的分布式架构实践相对比较零碎随时补充。俗话说得好冰冻三尺非一日之寒滴水穿石非一日之功罗马也不是一天就建成的当然对于我们开发人员来说一个好的架构也不是一蹴而就的。初始搭建开始的开始就是各种框架一搭然后扔到Tomcat容器中跑就是了这时候我们的文件、数据库、应用都在一个服务器上。服务分离随着系统的的上线用户量也会逐步上升很明显一台服务器已经满足不了系统的负载这时我们就要在服务器还没有超载时提前做好准备。由于我们是单体架构优化架构在短时间内是不现实的增加机器是一个不错的选择。这时我们可能要把应用和数据库服务单独部署如果有条件也可以把文件服务器单独部署。反向代理为了提升服务处理能力我们在Tomcat容器前加一个代理服务器我一般使用Nginx当然你如果更熟悉Apache也未尝不可。用户的请求发送给反向代理然后反向代理把请求转发到后端的服务器。严格意义上来说Nginx是属于Web服务器一般处理静态HTML、CSS、JS请求而Tomcat属于Web容器专门处理JSP请求当然Tomcat也是支持html的只是效果没Nginx好而已。反向代理的优势如下
隐藏真实后端服务负载均衡集群高可用集群缓存静态内容实现动静分离安全限流静态文件压缩解决多个服务跨域问题合并静态请求(HTTP/2.0后已经被弱化)防火墙SSL以及http2动静分离基于以上Nginx反向代理我们还可以实现动静分离静态请求如HTML、CSS、JS等请求交给Nginx处理动态请求分发给后端Tomcat处理。Nginx 升级到1.9.5可以开启HTTP/2.0时代加速网站访问。当然如果公司不差钱CDN也是一个不错的选择。服务拆分在这分布式微服务已经普遍流行的年代其实我们没必要踩过多的坑就很容易进行拆分。市面上已经有相对比较成熟的技术比如阿里开源的Dubbo(官方明确表示已经开始维护了)Spring家族的Spring Cloud当然具体如何去实施无论是技术还是业务方面都要有很好的把控。DubboSpringCloud
服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spring Cloud Config微服务与轻量级通信
同步通信和异步通信远程调用RPCREST消息队列持续集成部署服务拆分以后随着而来的就是持续集成部署你可能会用到以下工具Docker、Jenkins、Git、Maven。图片源于网络基本拓扑结构如下所示整个持续集成平台架构演进到如下图所示服务集群Linux集群主要分成三大类( 高可用集群 负载均衡集群科学计算集群)。其实我们最常见的也是生产中最常接触到的就是负载均衡集群。负载均衡实现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-sessionredis实现的(最适合)负载均衡策略负载均衡策略的优劣及其实现的难易程度有两个关键因素负载均衡算法对网络系统状况的检测方式和能力。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已大规模运用于分布式集群服务中并证明了自己优越的性能。消息队列异步通知比如短信验证邮件验证这些非实时反馈性的逻辑操作。流量削锋应该是消息队列中的常用场景一般在秒杀或团抢活动中使用广泛。日志处理系统中日志是必不可少的但是如何去处理高并发下的日志确是一个技术活一不小心可能会压垮整个服务。工作中我们常用到的开源日志ELK为嘛中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。消息通讯点对点通信(个人对个人)或发布订阅模式(聊天室)。日志服务消息队列中提到的ELK开源日志组间对于中小型创业供公司是一个不错的选择。安全优化以上种种没有安全做保证可能都会归于零。阿里云的VPN虚拟专有网络以及安全组配置自建机房的话要自行配置防火墙安全策略相关服务访问比如MySQL、Redis、Solr等如果没有特殊需求尽量使用内网访问并设置鉴权尽量使用代理服务器不要对外开放过多的端口https配合HTTP/2.0也是个不错的选择
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88195.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!