0%

Spring Cloud

微服务产生的背景

单体应用存在的问题

  • 随着业务的发展,开发变得越来越复杂。
  • 修改、新增某个功能,需要对整个系统进行测试,重新部署。
  • 一个模块出现问题,很可能导致整个系统崩溃。
  • 多团队同时对数据进行管理,容易产生安全漏洞。
  • 各个模块使用同一种技术框架,局限性太大,很难根据业务选择最适合的技术架构。
  • 模块内容太复杂,如果员工离职,可能需要很长时间才能完成任务交接。

为了解决上述问题,微服务架构应运而生,简单来说,微服务就是将一个单体应用拆分成若干个小型服务,协同完成系统功能的一种架构模式,在系统架构层面进行解耦合,将一个复杂问题拆分成若干个简单问题。
这样的好处是对于每一个简单问题,开发、维护部署的难度就降低了很多,可以实现自治,可以自主选择最适合的技术框架,提高了项目开发的灵活性。
微服务架构不仅是简单的拆分,拆分之后的各个微服务之间还要进行通信,否则就无法协同完成需求。
微服务之间只需要制定统一的协议即可,至于每个微服务使用什么技术框架来完成,统统不需要关心。
这种松耦合的方式使开发、部署都变得更加灵活,同时系统更容易拓展,降低了开发、运维的难度。

阅读全文 »

Spring MVC

Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。

Spring MVC功能

MVC:Controller(控制层)、Modedl(模型层)、View(视图层)
流程:Controller接收客户端请求,调用相关业务层组件产出Model,获取业务数据并返回给Controller,Controller再结合View完成业务数据的视图层渲染,并将结果响应给客户端。

Spring MVC对这套MVC流程进行封装,帮助开发者屏蔽底层代码,并且开放出相关接口供开发者调用,让MVC开发变得更加简单方便。

Spring MVC实现原理

核心组件

  • DispatcherServlet:前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个Spring MVC的核心模块。前端请求映射到具体Handler。
  • Handler:处理器,完成具体的业务逻辑,相当于Servlet。
  • HandlerMapping:DispatcherServlet是通过HandlerMapping将请求映射到不同的Handler。
  • Hanglerinterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现该接口完成。
  • HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果需要额外拦截处理,可以通过田间拦截器进行设置)。
  • HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单的数据验证、数据类型的转换、将表单数据封装到POJO等,这一系列操作都是由HandlerAdapter完成,DispatcherServlet是通过HandlerAdapter执行不同的Handler。
  • ModelAndView:封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet。
  • ViewResolver:视图解析器,DispatcherServlet通过它将逻辑视图解析为物理视图,最终将渲染的结果响应给客户端。
阅读全文 »

定时任务与基本概念

在指定的时间,做指定的动作

简单启动一个调度器

public class QuartzTest {
    public static void main(String[] args) {

        try {
            //从调度器工程获得一个调度器
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // 启动
            scheduler.start();

            scheduler.shutdown();

        } catch (SchedulerException se) {
            se.printStackTrace();
        }
    }
}

示例代码,获取scheduler实例对象,启动,然后关闭。
当调用StdSchedulerFactory.getDefaultScheduler()获取scheduler实例对象后,在调用scheduler.shutdown()之前,scheduler不会终止,因为还有活跃的线程在执行。

阅读全文 »

数据湖

数据湖是一种数据存储结构,可以存储任何类型的数据,包括像图片文档这样的非结构化数据,数据湖通常更大,成本更为廉价。存储其中的数据不需要满足特定的schema,数据湖也不会尝试去将特定的schema施行其上。相反的是,数据的拥有者通常会在读取数据的时候解析schema(schema-on-read),当处理相应的数据时,将转换施加其上。

ODS和数据湖有两个共同的重要特征:不加转换的原始数据,可以进行不预先设置的分析。ODS一般用来存储业务运营数据,也就是OLTP(联机事务处理)数据的快照和历史,而数据仓库一般用来存储分析数据,对应OLAP(联机分析处理)需求。

  • 存储海量的原始数据
  • 支持任意的数据格式(结构化、半结构化、非结构化)
  • 较强的分析和处理能力
阅读全文 »

大数据作业调度平台

任务调度原理与规则

任务

任务是我们通常想要执行的一系列程序指令的集合

任务调度

将编写好的任务按照用户期望的时间,预定的需求进行执行。

任务调度规则

不同的任务调度工具规则不同,例如Azkaban是批量工作流任务调度,Quartz是同步/异步任务调度

任务调度需要解决的问题

  1. 采用程序来执行,可减少认为的误操作,以免带来不必要的麻烦
  2. 解放员工,提高工作效率
  3. 某些需求程序比人力更合适,例如每天两天凌晨两点执行数据同步
  4. 可追溯,异常及时通知等等
阅读全文 »

Spring

IOC 控制反转

开发步骤

  1. 创建Maven工程,pom.xml导入依赖
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
</dependencies>
  1. 在resources路径下创建spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="student" class="org.example.entity.Student"></bean>
</beans>
  1. IoC容器通过读取sping.xml文件,加载bean标签来创建文件
  2. 调用API获取IoC容器中所存在的对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spirng.xml");
Student student = (Student)applicationContext.getBean("student");
System.out.println(student);
阅读全文 »

Vue

element_ui

Icon图标

提供了一套常用的图标集合,直接用i标签集合class来使用:

<i class="el-icon-edit"></i>
<i class="el-icon-share"></i>
<i class="el-icon-delete"></i>
<el-button type="primary" icon="el-icon-search">搜索</el-button>

e-icon-iconName为官网定义的名称,直接去官网查找对应的图标,修改class属性即可。

阅读全文 »

Vue.js

Vue项目的创建

  1. 安装Vue
# 全局安装 vue-cli
$ cnpm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 这里需要进行一些配置,默认回车即可
This will install Vue 2.x version of the template.

For Vue 1.x use: vue init webpack#1.0 my-project

? Project name my-project
? Project description A Vue.js project
? Author runoob <test@runoob.com>
? Vue build standalone
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes
  1. 运行项目
cd my-project
cnpm install
cnpm run dev

Vue目录解析

目录/文件 说明
build 项目构建(webpack)相关代码
config 配置目录,包括端口号等。我们初学可以使用默认的。
node_modules npm 加载的项目依赖模块
src assets: 放置一些图片,如logo等。
components: 目录里面放了一个组件文件,可以不用。
App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。
main.js: 项目的核心文件。
static 静态资源目录,如图片、字体等。
test 初始测试目录,可删除
.xxxx文件 这些是一些配置文件,包括语法配置,git配置等。
index.html 首页入口文件,你可以添加一些 meta 信息或统计代码啥的。
package.json 项目配置文件。
README.md 项目的说明文档,markdown 格式