7 我是索隆

尚未进行身份认证

高级Java工程师

等级
TA的排名 2w+

大型网站技术架构演进与性能优化(九)九、网站高可用建设:大型网站的稳定性建设

九、网站高可用建设:大型网站的稳定性建设稳定性是决定网站生死的命脉1、故障带来的影响导致极差的用户体验、严重影响公司声誉2、网站的可用性指标网站可用性即网站正常运行时间的百分比,业界用N个9来量化可用性,最常说的是“4个9(99.99%)”。网站可用性如果对达到4个9基本上就算及格了,即网站一年的不可用时间不超过52分钟。为了保障整个网站的全部服务完全不出错,有必要对服务进行分级,以保...

2020-02-06 21:47:16

大型网站技术架构演进与性能优化(八)八、全局基础设施优化:资源调度优化

八、全局基础设施优化:资源调度优化基础设施包括JDK、Tomcat、VM、操作系统和文件系统甚至硬件设备,它们其实都有优化空间,而且由于基础设施的优化是事关全局的,所以通用性会更广、收益会更大。1、什么是资源调度资源调度分为两个阶段:一是实现物理资源的虚拟化,二是将资源虚拟化后进一步在时间和空间上实现更细粒度的编排、优化资源的使用。对物理机资源进行虚拟化可以提升资源的利用率,而对资源的良好...

2020-02-06 09:18:47

大型网站技术架构演进与性能优化(七)七、链路优化:大秒系统的极致优化思路

七、链路优化:大秒系统的极致优化思路全链路的优化案例,即用户端->中间的链路->服务端->数据库的整条链路的极致优化思路。主要介绍大秒系统以及这种典型的读数据的热点问题的解决思路和实践经验。1、一些数据2013年的小米秒杀,使用的就是大秒系统。下面介绍秒杀系统的设计原则,让大家有整体的认识。2、热点隔离秒杀系统的第一个设计原则就是隔离热点数据,即禁止1%的请求影响剩...

2020-02-05 00:17:47

大型网站技术架构演进与性能优化(六)六、应用架构探索:合并部署

六、应用架构探索:合并部署1、什么是架构业务架构抽象面向用户的,主要考虑给用户带来什么价值、什么体验,如帮助用户完成一系列需求的集合。应用架构面向技术人员,如何用更低的成本更快更好地实现用户的需求,是应用架构要解决的问题。平台(服务)架构应用架构复杂到一定程度后,需要单独抽出一层平台架构治理层,解决业务和应用的扩展性问题,以实现业务模型抽象、灵活扩展业务能力水平、灵活定制和组装应用等...

2020-02-04 12:02:29

大型网站技术架构演进与性能优化(五) 五、应用程序优化:代码级优化

五、应用程序优化:代码级优化1、优化思路做优化首先要知道从哪里入手,也就是要知道系统的瓶颈在哪里。一个请求会消耗很多资源:CPU、内存、网络、磁盘等。这些资源中总会有一个到达瓶颈,只有优化最先到达瓶颈的资源才会产生效果。压测工具Java有两个经典的代码热点分析工具:JProfiler和YourkitApache ab压测工具这些具体使用参考文档。发现瓶颈Jstack,可以看看当前的...

2020-02-03 15:22:00

大型网站技术架构演进与性能优化(四) 全球化下的网站演进:全球部署方案

四、全球化下的网站演进:全球部署方案全球化部署需要解决以下几个问题:第一,业务核心单元的梳理。这些核心单元必须可以裁剪或添加。第二,核心单元必须可以快速部署到国防的机房,最好能够一键部署,即首先要实现单元化部署。第三,实现全球数据连通。第四,处于研发效率的考虑,部署在全球的业务系统要有良好的定制型和扩展性。1、国际化的背景国际化一般有两种类型:一种是进口业务,像天猫国际和全球购;一种...

2020-02-02 23:17:11

大型网站技术架构演进与性能优化(三) 大型网站平台化演进:大中台小前台

三、大型网站平台化演进:大中台小前台中台这个概念早期是由美军的作战体系演化而来的,技术上所说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。电商经过十几年的发展,组织已经庞大而复杂,业务不断细化拆分,也导致野蛮发展的系统越来越不可维护,开发和改造效率极低,也有很多新业务不得不重复造轮子,所以中台的目标是为了解决效率问题,同时降低创新成本。1、为什么需要中台本质上是为了解决业务实现的...

2020-02-01 16:50:14

大型网站技术架构演进与性能优化(二) 无线化:无线时代下的架构演进

二、无线化:无线时代下的架构演进1、无线环境下的新挑战端的问题无线场景下的端屏幕更小,但是端的控制力更强,端上的交互可以做得更加流畅,更主要的是客户端能保持大量的状态数据,减少与后台的交互;客户端能对底层系统有更多的交互,如本地缓存;客户端的网路不稳定,但是网络调用会更加可控。服务端的问题由于同一个业务需要暴露给多个终端,那么我们要考虑如何做到一个业务逻辑能够多端复用,前端的交互逻辑如何...

2020-01-31 21:20:57

大型网站技术架构演进与性能优化(一) 构建大型网站:分布式改造

一、构建大型网站:分布式改造1、为什么要做分布式化随着业务的扩展和流量的爆发式增长,该系统很快达到了瓶颈,是不是一定要对它做分布式改造呢?其实我们早期也尝试用过一些高端的服务器(IOE),但一方面价格昂贵,另一方面这样也阻挡不了瓶颈的到来,分布式改造成为必由之路。分布式改造必须先解决以下几个问题:第一,应用需要微服务化。即将大量粗粒度的应用逻辑拆小做服务化改造第二,必须先建立分布式服务框...

2020-01-31 18:38:06

读领域驱动设计的领悟

领域驱动设计,个人领悟,主要是一种解决问题的方法论。在互联网公司中,大力提倡敏捷开发的今天,领域驱动设计会增加开发的复杂度,需要增加很大的开发工作量。在我工作的几家公司中,只有一家公司曾经提出过要进行领域驱动设计,但是领域驱动设计,大部分开发人员并不是很懂,对开发人员的能力要求也比较高,每个人的理解也都不一样,因此当时只是个别人的开发习惯。有这种领域驱动设计的思想,可以极大提高代码重用率、代码...

2020-01-31 14:49:18

jackson使用

下面列举了json的常用方法:1、对象转json2、json字符串转对象3、 json字符串转为jsonNode4、支持泛型public class Jackson2Helper { private static final ObjectMapper mapper = new ObjectMapper(); /** * 对象转为json * @par...

2020-01-16 22:41:13

使用joda-time封装的日期工具类

1、Joda-time简介Joda-Time这个专门处理日期时间的库2、类说明Instant:不可变类,代表时间线上的一个瞬时的时间点DateTime:不可变类,它以毫秒级的精度封装时间上的某个瞬间时刻,用来替换JDK的Calendar类LocalDate:不可变类,该类封装了一个年/月/日的组合。没有时区信息LocalTime:不可变类,表示一个本地的时间,而不包含日期部分。没有时区...

2020-01-16 18:45:35

spring boot 、mybatis-plus、shiro整合入门教程(五)——采用mybatis-plus动态数据源配置,读写分离

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(四)——自定义日志注解、缓存注解本项目采用的读写分离,使用的是mybatis-plus动态数据源切换的方案,官方文档项目中的数据库配置示例如下:代码中的数据源切换使用注解的方式,代码地址到这里,本项目的主要技术框架搭建完善,其中的技术细节,没有详细说明,比如shiro的注解@RequiresPe...

2019-05-26 23:12:45

spring boot 、mybatis-plus、shiro整合入门教程(四)——自定义日志注解、缓存注解

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(三)——shiro使用在使用shiro进行spring boot、mybatis-plus的整合中,使用了日志注解、缓存注解,主要原理利用了AOP切面进行的开发,代码如下:/** * @author liuyi * @date 2019/5/20 * * 缓存注解 */@Documented...

2019-05-26 22:55:54

spring boot 、mybatis-plus、shiro整合入门教程(三)——shiro使用

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作这篇主要介绍下shiro在项目中是如何使用的,前期的主要工作是数据库表的设计,上篇文章已经给出表的设计,详细的数据库初始化sql,可以参考代码库的sql,简单说下登录原理,用户每次登录的时候生成token,同时根据用户id更新数据库中的token有效时间和toke...

2019-05-26 22:45:56

spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(一)——mybatis-plus代码生成器项目中的数据库表设计如下:菜单管理页面功能:新增、修改、删除、查询新增代码如下:SysMenuController类的代码如下:@Resource private SysMenuServiceImpl sysMenuService; /*...

2019-05-26 21:55:55

spring boot 、mybatis-plus、shiro整合入门教程(一)——mybatis-plus代码生成器

最近在研究spring boot、mybatis-plus、shiro等技术框架的整合,为此设计了一套简单的权限系统,在其中实现了主要的业务功能,增加一些功能代码和技术技巧,提高自己的代码能力项目整体结构图:项目整体依赖的pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.ap...

2019-05-26 18:22:20

自定义Java web框架(六)

接续上一篇文章自定义Java web框架(五)本章主要讲解请求转发到后端之后如何处理的请求转发,也叫路由。实现思路如下:我们需要编写一个Servlet,让它来处理所有的请求,从HttpServletRequest对象中获取请求方法与请求路径,通过ControllerHelper#getHandler方法来获取Handler对象。当拿到这个Handler对象之后,可以获取Controller的...

2018-10-28 17:21:19

自定义Java web框架(五)

接续上一篇文章自定义Java web框架(四)本章主要讲解框架的初始化。实现思路如下:主要是把前几篇文章中定义的相关帮助类初始化,类加载器助手类、Bean助手类、IOC助手类、Controller助手类。核心代码如下:public final class HelperLoader { public static void init() { Class<?&...

2018-10-28 10:42:00

自定义Java web框架(四)

接续上一篇文章自定义Java web框架(三)本章主要讲解如何处理Controller类,请求进入Controller类之后,根据请求的方法和路径找到Controller类中的Action方法执行业务逻辑处理。实现思路如下:获取所有定义了Controller注解的类,可以通过反射获取该类的中所有带有Action注解的方法,获取Action注解中的请求表达式,进而获取请求方法与请求路径,封装一...

2018-10-28 09:46:27

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。