`

架构搭建-实践篇

 
阅读更多

遗留问题:

下午:
1.线程池
2.读写分离:AOP
3.Guava-缓存 和 spring eache缓存
4.发送短信


缓存框架

异步队列框架

分库分表框架

高可用框架(结合学习dubbo的高可用实现)

 

 

1.根据不同行业特点,需求特点,进行详细设计,系统规模,流量评估

2.技术选型,这里要求,能针对绝大部分需求给出技术解决方案

3.能够指导测试工程师,测试方案,测试工具,测试技术

4.能够指导运维公司,硬件,网络环境,需要哪些基础软件以及优化

4.掌握系统,系统各个组件的安装,配置,使用优化技巧

5.明确项目技术层次,能够选择匹配项目技术能力的员工

6.时刻了解最新技术动态

 

比如,性能测定诊断与优化,jvm,并发实践,redis,mq,网络等等优化能力

 

rpc 有很多开源的,拿一个过来用用,然后,把监控、限流、服务降级啥的逐步做好

 

有流量非常大的业务场景,用微服务架构还是很有好处的,不是很大,一般的rpc,soa基本够用了.....

 

 

=====================建构实践==============================

1.总结架构发展流程,并流利表达
2.需要记录自己的任务进展以及相关成果

系统规模(日活)与硬件评估 待
需求,详设与技术选型(微服务)待
测试工具与测试方案(包括各种技术单个和集群)待
前沿技术 待


【高性能】

 

网站发展初期,往往一台机器部署:web应用,数据库,文件服务器;
随着网站用户增加,会将web应用服务器,数据库服务器,文件服务器分离到不同的服务器上;
接着根据出现性能瓶颈的位置,选择缓存,应用横向扩容,数据读写分离,异步处理等一系列技术;
当以上措施都无法满足时候,尤其数数据读写无法满足海量数据处理时,需要进行分库分表或者采用微服务架构
 
图:待补
 

 

网站初期采用的架构

说明:(1)为保证高可用,在网站初期各个组件就必须集群化 (2)这里考虑后期使用OpenResty,添加了web应用层

接入层(Nginx*2+keepalived)+Nginx集群+ tomcat集群 + 单Mysql库(读写分离) +多级缓存

1.接入层(流量负载层+核心Nginx层)

功能:

通过LVS+HAProxy将流量转发到核心Nginx层,实现流量的负载均衡;

在核心Nginx层可以实现流量分组,内容缓存,请求头过滤,故障切换,限流,防火墙等通用功能

这里:没有采用流量负载层,通过keepAlived实现核心Nginx层的高可用

 

软件/技术选用:负载均衡器(Nginx,F5,LVS,HaProxy),高可用热备方案(keepAlived)

 

方案规划:Nginx*2 + keepAlived*2

VIP/监听端口 IP 主机名 Nginx端口 默认主从
192.168.1.100/88 192.168.1.111 edu-proxy-01 80 Master
192.168.1.112 edu-proxy-02 80 Slaver

注:由于机器的缘故,在测试方案里 负载均衡器Tomcat集群配置在相同的机器上;实际的主机名edu-web-01,edu-web-02

 

实践方案/文件:

安装过程:参考Keepalived+Nginx实现高可用Web负载均衡即可。
安装和配置的软件: /usr/local/nginx              /usr/local/keepalived

配置文件地址:/etc/keepalived
相关组件/配置文件:见附件

相关命令:

#/usr/local/nginx/sbin/nginx 

#/usr/local/nginx/sbin/nginx -s reload 

# service keepalived stop/start/restart
 
补充:
1.亿级流量-负载均衡和反向代理部分待补充到Nginx-基础篇(反向代理/负载均衡/页面缓 .
 

 

2.业务Nginx层

作用:比如商品详情页,可以在业务Nginx实现业务逻辑,或者反向代理到如Tomcat集群;

在这一层可以实现内容压缩(放在这一层目的是,减少核心Nginx的CPU压力,将压力分散到个业务Nginx),A/B测试,降级。

 

软件/技术选用:Nginx glassfish

 

方案规划:

IP 主机名 端口号
192.168.1.106 edu-nginx-01 80
192.168.1.107 edu-nginx-02 80
192.168.1.108 edu-nginx-03 80

 

安装配置最佳实践:参考本博文的相关内容

软件安装位置:/usr/local/nginx

配置文件位置:/usr/local/nginx/conf/nginx.conf 配置负载均衡的一些信息

相关组件/配置文件:见附件nginx+keepalived里面的 nginx(业务Nginx配置).conf

相关命令:

#/usr/local/nginx/sbin/nginx -s reload 

# service keepalived stop/start/restart

 

3.Web服务器集群

作用:

软件/技术选用:Tomcat,glassfish,webLogic,webService,Jboss

 

方案规划:

IP 主机名 端口号
192.168.1.111 edu-web-01 8081
192.168.1.112 edu-web-02 8081

 

安装配置最佳实践:参考本博文的相关内容

软件安装位置:/usr/local/src/tomcat7

配置文件位置:/usr/local/src/tomcat7/conf/server,xml 配置端口号,根目录等

相关组件/配置文件:见附件

相关命令:

 

# /usr/local/src/tomcat7/bin/startup.sh & tail -f /usr/local/src/tomcat7/logs/catalina.out 
动静分离:由于考虑OpenResty,静态资源分布在Nginx-web服务器上,参考: Nginx+Tomcat负载均衡配置

附加问题:
3.1 .session一致性问题

关于 tomcat 集群中 session 共享的三种方法

3.2 数据一致性问题

待写

 

 补充:

Tomcat优化

 

4.缓存

作用:缓存是性能优化首先要想到和使用的工具

软件/技术选用:Redis,Memcache
方案规划:      配置文件地址 命令
IP PORT 主机名
192.168.1.122 7770(主)7771(从)8880(主)8881(从)6660(主)6661(从) edu-redis-01
192.168.1.123 7770(主)7771(从)8880(主)8881(从)6660(主)6661(从) edu-redis-02
192.168.1.124 7770(主)7771(从)8880(主)8881(从)6660(主)6661(从) edu-redis-03
说明:3台的7770/8880端口服务做主集群;7771/8881做从集群;Redis未分片122:6660主,122-123-124的6661做从集群
配置文件:见附件nutcracker.yml
TWEMPROXY:分片代理服务器
IP  
192.168.1.122  
基本命令及配置文件地址
需要在192.168.1.122,123,124 上分别启动:
SSDB 7770 7771 8880 8881
nohup /usr/local/ssdb/ssdb-server   /usr/local/ssdb-master/ssdb_basic_7770.conf &  
nohup /usr/local/ssdb/ssdb-server   /usr/local/ssdb-master/ssdb_basic_7771.conf &  
nohup /usr/local/ssdb/ssdb-server   /usr/local/ssdb-master/ssdb_desc_8880.conf  &  
nohup /usr/local/ssdb/ssdb-server   /usr/local/ssdb-master/ssdb_desc_8880.conf  &  

REDIS 
192.168.1.122:6660 6661
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6660.conf &
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6661.conf &
192.168.1.123 6661
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6661.conf &
192.168.1.124 6661
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6661.conf &

启动Twemproxy
nutcracker.init {start|stop|status|restart|reload|condrestart}
nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log

 

主要参考:缓存 (5)

Redis介绍,安装使用及集群介绍

SSDB介绍与使用

Twemproxy-缓存代理分片机制

Redis语法,Key值设计及常用案例介绍

Redis 3.0 cluster 集群

 

多级缓存实践:结合账户系统

1.HTTP缓存

 

2.本地全量缓存

 

3.分布式缓存

    缓存:用户信息,具体java操作参见:

 

4.应用级缓存

 

补充:

1.亿级流量-Http缓存部分

2.首先是异步,其次使用消息队列,最后可监听binlog的变化

3.多级缓存的搭建

 

 

5.Mysql集群(读写分离/分库分表)

5.1

 

5.2

 

5.3 基于spring-Mybatis的读写分离配置

2个坑:

(1)改文件还是读target里面的内容配置了这个 <aop:aspectj-autoproxy proxy-target-class="true" />   

(2)配置文件先后顺序很重要否则读不到

 

 

 

6.基于Dubbo的分布式服务治理

作用:

 

参考:

构建基于Dubbo的分布式项目

 

环境规划

组件 说明 IP port
edu-web-boss consumer 192.168.1.111+192.168.1.112 8081
edu-service-user provider /usr/server/edu/service/user -
provider 192.168.1.111+192.168.1.112 8082
zookeeper-3.4.6 注册中心 192.168.1.106/107/108 2181-2182-2183
MySQL5.6 数据库 192.168.1.122 3306

 这里把未分布式前的tomcat7变成:tomcat7-server1  tomcat7-server2

 

[root@edu-web-01 src]# mv tomcat7 tomcat7-server1
[root@edu-web-01 src]# cp -r tomcat7-server1 tomcat7-server2
 修改tomcat7-server2的相关端口:
shutdown 端口:8005  主要负责启动关闭.    
ajp端口:8009 主要负责通过ajp均衡(常用于apache和tomcat整合)    
http端口:8081 可以通过web页面直接访问(nginx+tomcata整合)    
#注* 如果tomcat1三个端口分别为:8005 8009 8081 ,那么tomcat2端口在此基础上都+1,即为:8006 8010 8082 

 

 

 独立部署Dubbo服务

cd /usr/server/edu/service/user/  
./service-user.sh start  
./service-user.sh stop  
./service-user.sh restart 

 

Dubbo 服 务消费者 Web 应用 war

 

#启动
/usr/local/src/tomcat7-server1/bin/startup.sh & tail -f /usr/local/src/tomcat7-server1/logs/catalina.out 
#停止
/usr/local/src/tomcat7-server1/bin/shutdown.sh & tail -f /usr/local/src/tomcat7-server1/logs/catalina.out

测试:

192.168.1.111:8081/edu-web-boss

 

 





构建微服务
因为单个应用存在的一系列问题,选择微服务的特点,对业务模块分割,微服务,提高了。。还不同应用不同步,提高数据处理能力

分库分表技术

搜索引擎

 


可用性:

 

包括监控,降级,限流等慢慢建设
包括:动态变更配置

 

 

分享到:
评论

相关推荐

    微服务架构设计与实践-内训方案.pdf

    ### 微服务架构设计与实践-内训方案 #### 第一课:知识原理篇 - **微服务定义及其本质**: - 微服务是一种架构风格,它将一个应用程序拆分成一组小型的服务,每个服务独立运行,通过轻量级通信机制(通常是HTTP...

    手把手SSH架构搭建

    ### 手把手SSH架构搭建详解 #### 一、概述 SSH框架是指Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级开发框架。本篇将详细介绍如何在MyEclipse 10环境下搭建SSH框架,并进行...

    大数据存储及分层实践-4-2 实时数仓的场景剖析与架构搭建实战.zip

    本篇内容将深入探讨实时数仓的场景应用及其架构搭建实战,旨在帮助读者理解和掌握相关技术。 实时数仓的核心在于对海量数据进行快速处理和分析。传统的批量处理方式已无法满足当今商业环境的敏捷需求,因此,实时...

    分布式数据库架构及企业实践-基于Mycat中间件 + 官网入门

    本篇将深入探讨分布式数据库架构以及Mycat在其中的应用,同时结合官网入门指南,帮助读者掌握其基本概念和实践技巧。 一、分布式数据库架构概述 分布式数据库是指数据分布在多个物理节点上,通过网络进行通信和...

    大数据架构-京东-从无到有

    京东作为中国电商巨头,其大数据架构的发展历程,为业界提供了宝贵的实践经验。本篇将围绕“需求转变设计”、“加工方案ETL”两大核心主题,探讨大数据平台建设的全过程。 首先,"需求转变设计"是大数据架构构建的...

    小团队构建大网站:中小研发团队架构实践.part1.rar

    本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、...

    LAMP架构搭建

    ### LAMP架构搭建详解 #### 一、LAMP架构概述 LAMP架构是一种常见的Web服务器架构,由四个主要部分组成:Linux操作系统、Apache Web服务器、MySQL数据库和PHP编程语言。这种架构广泛应用于互联网上的各种网站和...

    【推荐】最强大数据学习与最佳实践资料合集(基础+架构+数仓+治理+案例)(100份).zip

    DorisDB原理剖析 和应用实践篇2021 Flink 流批一体的技术架构以及在阿里的实践 Flink实时仓库实践 Hadoop开源相关,Flink,Kylin等集群搭建2021 KylinCloud+Hudi实践 三、数仓篇 传统数仓与大数据数仓区别 模板-...

    PalmInteraction-基础搭建篇

    《PalmInteraction-基础搭建篇》 在信息技术领域,开源项目是推动技术创新和发展的重要力量,它们为开发者提供了共享和协作的平台。本文将深入探讨一个名为"PalmInteraction"的开源项目,重点在于其基础框架的搭建...

    S2SH架构搭建简单实例解析

    **S2SH架构搭建简单实例解析** S2SH架构,全称为Struts2+Spring+Hibernate,是Java Web开发中的经典MVC(Model-View-Controller)架构组合。这个架构结合了Struts2的视图控制、Spring的依赖注入与事务管理以及...

    DDD领域驱动设计初探(7):Web层的搭建 - 文章 - 伯乐在线1

    在本篇文章中,作者将Web层的实现以Web应用为例,采用MVC(Model-View-Controller)架构,并结合Bootstrap框架进行页面构建。 Bootstrap是一款流行的前端开发框架,提供了一系列的UI组件和样式,能快速创建响应式...

    java技能百练--游戏篇

    10. **框架应用**:学习并实践LWJGL或libGDX等游戏开发框架,可以快速搭建游戏架构,减少重复工作。 总的来说,"Java技能百练--游戏篇"将涵盖以上各个重要方面,通过实践和案例分析,帮助开发者深入理解Java在游戏...

    小团队构建大网站:中小研发团队架构实践.part2.rar

    本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、...

    阶段性学习-谷粒商城-基础篇

    《谷粒商城项目基础篇——深度解析SpringCloud架构》 在IT行业中,分布式微服务架构已经成为大型企业级应用的主流选择。SpringCloud作为Java领域的微服务解决方案,以其强大的功能和易用性备受开发者青睐。本篇文章...

    亿级流量网站架构核心技术-跟开涛学搭建高可用高并发系统

    本篇文章将基于“亿级流量网站架构核心技术—跟开涛学搭建高可用高并发系统”的核心内容进行深入探讨,旨在为读者提供一套完整的理论体系和技术实践指南。 #### 一、高可用与高并发的概念解析 1. **高可用(High ...

    网络游戏服务器架构研究(-)代理服务器的简单实践

    本篇文章将探讨代理服务器在网络游戏服务器架构中的简单实践,旨在帮助开发者理解如何利用代理服务器提升游戏性能和稳定性。 代理服务器,也称为中间服务器,是网络通信中的一种常见架构模式。在网络游戏中,代理...

    电子工程师自学速成-设计篇

    7. **实验与实践**:提供实验指导,让读者通过实际操作加深理解,如搭建电路、调试程序等。 8. **项目设计与案例分析**:分享真实的电子设计项目,分析设计思路和问题解决方法,帮助读者提升综合设计能力。 9. **...

Global site tag (gtag.js) - Google Analytics