遗留问题:
下午:
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
补充:
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:分片代理服务器
需要在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
构建微服务
因为单个应用存在的一系列问题,选择微服务的特点,对业务模块分割,微服务,提高了。。还不同应用不同步,提高数据处理能力
分库分表技术
搜索引擎
可用性:
包括监控,降级,限流等慢慢建设
包括:动态变更配置
分享到:
相关推荐
### 微服务架构设计与实践-内训方案 #### 第一课:知识原理篇 - **微服务定义及其本质**: - 微服务是一种架构风格,它将一个应用程序拆分成一组小型的服务,每个服务独立运行,通过轻量级通信机制(通常是HTTP...
### 手把手SSH架构搭建详解 #### 一、概述 SSH框架是指Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级开发框架。本篇将详细介绍如何在MyEclipse 10环境下搭建SSH框架,并进行...
本篇内容将深入探讨实时数仓的场景应用及其架构搭建实战,旨在帮助读者理解和掌握相关技术。 实时数仓的核心在于对海量数据进行快速处理和分析。传统的批量处理方式已无法满足当今商业环境的敏捷需求,因此,实时...
本篇将深入探讨分布式数据库架构以及Mycat在其中的应用,同时结合官网入门指南,帮助读者掌握其基本概念和实践技巧。 一、分布式数据库架构概述 分布式数据库是指数据分布在多个物理节点上,通过网络进行通信和...
京东作为中国电商巨头,其大数据架构的发展历程,为业界提供了宝贵的实践经验。本篇将围绕“需求转变设计”、“加工方案ETL”两大核心主题,探讨大数据平台建设的全过程。 首先,"需求转变设计"是大数据架构构建的...
本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、...
### LAMP架构搭建详解 #### 一、LAMP架构概述 LAMP架构是一种常见的Web服务器架构,由四个主要部分组成:Linux操作系统、Apache Web服务器、MySQL数据库和PHP编程语言。这种架构广泛应用于互联网上的各种网站和...
DorisDB原理剖析 和应用实践篇2021 Flink 流批一体的技术架构以及在阿里的实践 Flink实时仓库实践 Hadoop开源相关,Flink,Kylin等集群搭建2021 KylinCloud+Hudi实践 三、数仓篇 传统数仓与大数据数仓区别 模板-...
《PalmInteraction-基础搭建篇》 在信息技术领域,开源项目是推动技术创新和发展的重要力量,它们为开发者提供了共享和协作的平台。本文将深入探讨一个名为"PalmInteraction"的开源项目,重点在于其基础框架的搭建...
**S2SH架构搭建简单实例解析** S2SH架构,全称为Struts2+Spring+Hibernate,是Java Web开发中的经典MVC(Model-View-Controller)架构组合。这个架构结合了Struts2的视图控制、Spring的依赖注入与事务管理以及...
在本篇文章中,作者将Web层的实现以Web应用为例,采用MVC(Model-View-Controller)架构,并结合Bootstrap框架进行页面构建。 Bootstrap是一款流行的前端开发框架,提供了一系列的UI组件和样式,能快速创建响应式...
10. **框架应用**:学习并实践LWJGL或libGDX等游戏开发框架,可以快速搭建游戏架构,减少重复工作。 总的来说,"Java技能百练--游戏篇"将涵盖以上各个重要方面,通过实践和案例分析,帮助开发者深入理解Java在游戏...
本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、...
《谷粒商城项目基础篇——深度解析SpringCloud架构》 在IT行业中,分布式微服务架构已经成为大型企业级应用的主流选择。SpringCloud作为Java领域的微服务解决方案,以其强大的功能和易用性备受开发者青睐。本篇文章...
本篇文章将基于“亿级流量网站架构核心技术—跟开涛学搭建高可用高并发系统”的核心内容进行深入探讨,旨在为读者提供一套完整的理论体系和技术实践指南。 #### 一、高可用与高并发的概念解析 1. **高可用(High ...
本篇文章将探讨代理服务器在网络游戏服务器架构中的简单实践,旨在帮助开发者理解如何利用代理服务器提升游戏性能和稳定性。 代理服务器,也称为中间服务器,是网络通信中的一种常见架构模式。在网络游戏中,代理...
7. **实验与实践**:提供实验指导,让读者通过实际操作加深理解,如搭建电路、调试程序等。 8. **项目设计与案例分析**:分享真实的电子设计项目,分析设计思路和问题解决方法,帮助读者提升综合设计能力。 9. **...