Hablar de la construcción del conocimiento teórico-arquitectónico distribuido


Los arquitectos generalmente dan prioridad a la seguridad, la estabilidad y el alto rendimiento. Jaja, como novato, me pedí que instalara una B y recordara la arquitectura anterior.

base

idea

    CAP (consistencia, disponibilidad, tolerancia a fallas de partición) es imposible de lograr los tres, y se pueden lograr dos como máximo. En la construcción del sistema, la discusión de la construcción del sistema aquí da prioridad a varios puntos, de mayor a menor para la seguridad, estabilidad y alto rendimiento (la discusión del esquema del sistema se encuentra en el "diseño del esquema clave")

Selección técnica

De hecho, la selección técnica de un marco se determina en función del uso real del escenario empresarial y la selección de los tipos de tecnología a través de múltiples comparaciones técnicas. El método de comparación estaba limitado en mi capacidad personal en ese momento. Hice un uso completo De mi conocimiento de la industria y consultoría de recursos humanos y de la investigación de documentos de la industria, se dice que no puedo ser un gigante, pero puedo ver una cierta altura sobre los hombros de los gigantes.
    Aquí hablamos principalmente de front-end y back-end y terminales móviles, front-end vue, back-end java, mobile-end android WebView y h5. Aquí hay una breve introducción de cómo tecnología simple, la descripción específica en el siguiente esquema

El
     marco básico de front- end usa vue, el elemento-ui del lado de la PC que representa la página y el VUX del lado móvil. Será mejor que llevemos a cabo una encapsulación secundaria de element-ui. Establezca las especificaciones de desarrollo, recomiende el uso de restricciones de eslint y typeScript, las herramientas de desarrollo que usan vs código y la configuración relacionada con la herramienta. La configuración personal anterior se estableció como el siguiente
código vs:

{
 "files.autoSave": "off",
 "workbench.startupEditor": "welcomePage",
 "vetur.validation.template": false,
 "update.channel": "none",
 "editor.formatOnSave": false,
 "editor.tabSize": 2,
 "editor.fontSize": 16,
 "editor.detectIndentation": false,
 "vetur.format.defaultFormatter.js": "vscode-typescript",
 "vetur.format.defaultFormatter.html": "js-beautify-html"
}

Las especificaciones de diseño de eslint son las siguientes :

module.exports = {
 //此项是用来告诉eslint找当前配置文件不能往父级查找
 root: true,
 globals: {
   http: true,
   $: true,
   Swiper: true
 },
 parser: 'babel-eslint',
 //此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为module,指某块导入方式
 parserOptions: {
   ecmaVersion: 6,
   sourceType: 'module'
 },
 //此项指定环境的全局变量,下面的配置指定为浏览器环境
 env: {
   browser: true,
   node: true
 },
 // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
 // 此项是用来配置标准的js风格,就是说写代码的时候要规范的写,如果你使用vs-code我觉得应该可以避免出错
 extends: 'standard',
 // required to lint *.vue files
 // 此项是用来提供插件的,插件名称省略了eslint-plugin-,下面这个配置是用来规范html的
 plugins: [
   'html'
 ],
 // add your custom rules here
 // 下面这些rules是用来设置从插件来的规范代码的规则,使用必须去掉前缀eslint-plugin-
 // 主要有如下的设置规则,可以设置字符串也可以设置数字,两者效果一致
 // 'off' -> 0 关闭规则
 // 'warn' -> 1 开启警告规则
 //'error' -> 2 开启错误规则
 // 了解了上面这些,下面这些代码相信也看的明白了
 rules: {
   // allow async-await
   'generator-star-spacing': 'off',
   // 回调
   'standard/no-callback-literal': 0,
   // allow debugger during development
   'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
   // 强制在 function的左括号之前使用一致的空格
   'space-before-function-paren': 0
 }
}

Java back-end se
    centra en varias palabras clave: java8, ajuste y diseño de jvm , maven, git, protocolo Alibaba (si quieres puntos, pídeme que te los dé) , spring boot / cloud basic framework (sofa o spring cloud alibaba), docker o contenedor de implementación de Linux. Nuestra versión de Java usa jdk8 +, se recomienda usar el código abierto Apache y el protocolo Alibaba, usar la herramienta de desarrollo ide e instalar el complemento del protocolo Alibaba. Utilice maven como herramienta de compilación y cree su propia biblioteca de componentes maven. La herramienta de control de versiones utilizada es git o gitlab.      De hecho, el
terminal móvil WebView y h5
tienen mejores productos de Internet para la industria financiera, como mpass, aquí hay solo una breve explicación, puede escribir WebView para lograr la interacción js con la página frontal h5 y h5 puede usar VUX.

Diseño técnico back-end

Esta es solo una introducción técnica, para no entrar en detalles. Además, cuando se crea una solución técnica, no es un caché de clúster de RPC o Redis cuando aparece. Este es un enfoque incorrecto. Cada una de nuestras arquitecturas se basa en la conducción empresarial y también diseñamos conceptos de diseño DDD. Infraestructura recomendada: arquitectura técnica spring boot, arquitectura de capa de persistencia de base de datos mybatis, subtabla de base de datos mysql de base de datos (división horizontal, división vertical), diseño de esquema (diseño de arquitectura de caso visio y UML y ppt, diseño de base de datos de diseño de energía, diseño de prototipo de axure), depuración de interfaz herramientas (swagger-ui y cartero). La siguiente es la selección técnica del sistema de construcción anterior del individuo, el negro es la tecnología adoptada por el individuo

Microservice arquitectura RPC : de primavera de nubes , primavera nube de Alibaba, dubbo, utilizado personalmente nube de primavera antes, y la nube de Alibaba tarde de primavera
monitoreo se hizo popular : gato , Zipkin, Pinpoint, SkyWalking
registro : cónsul , empleado del zoológico, euroke, previamente sugerido por el Cónsul de la industria, más tarde, China cerró su fuente.
Centro de configuración : apollo , nacos, configuración de la nube de primavera,
herramienta de caché de configuración dinámica : redis o memcache, puede usar transacciones distribuidas en combinación con la sesión de primavera : 2PC, concepto de TCC, redis para lograr transacciones , MQ para lograr soluciones asíncronas, zookeeper o base de datos Funciones ACID. Limitación y fusible de corriente : fusible de Hystrix , a través de la programación de la puerta de enlace API de limitación de corriente centinela : puerta de enlace Spring Cloud y puerta de enlace escrita personalmente ...



Transmisión de datos : use la transmisión json, Jackson (ObjectMapper) y gson y DTO, VO, VO,
acceso a la capa de persistencia del concepto de PO : cola de mensajes mybatis : RabbitMQ, RocketMQ, ActiveMQ, Kafka, IBMMQ , pero se recomienda RocketMQ aquí

Diseño de arquitectura general

Después de combinar la selección de tecnología anterior, es para compilar dibujos de diseño estructural, principalmente de la siguiente manera

  1. Arquitectura lógica
  2. Arquitectura de integración de sistemas
  3. Estructura de despliegue físico
  4. Dibujo de diseño de base de datos
  5. División del módulo del centro del sistema
  6. Control de flujo, puerta de enlace, división del módulo central
  7. El diseño de la solución de doble activo, el problema a considerar en la misma ciudad de doble activo es el caché

Diseño de caja clave

El diseño del esquema clave es impulsar el diseño en el campo de DDD. De hecho, es dividir el esquema grande en esquemas pequeños y completarlos de forma independiente. Los esquemas pequeños se fusionan para finalmente realizar el esquema grande. Se deben considerar los siguientes puntos (individual)

  1. Alta consulta concurrente (subbase de datos y subtabla, optimización de sql y consulta de cursor usando mybatis, la consulta de cursor está cerrada, por lo que necesita obtener sqlsession o transacción @Transational)
  2. Sin mecanismo de sesión (caché de base de datos o herramienta de almacenamiento en caché de terceros redis)
  3. Especificación de registro (filtro de desensibilización de registro, algoritmo de copo de nieve de seguimiento de enlaces)
  4. Plataforma de monitoreo (cat point enterrado de datos)
  5. Componentes públicos (carga y descarga de procesamiento unificado del interceptor HandlerInterceptor, selección de base de datos y shardingsphere, envío repetido de redis, verificación de idempotencia de token, verificación de firma sm2)
  6. Diseño de seguridad (filtro de ataque de scripting entre sitios, filtro y preprocesamiento de declaraciones para evitar ataques SQL, verificación entre dominios del ataque de falsificación entre sitios)
  7. Separación frontal y posterior (movimiento y separación estática, servidor nginx, servidor de archivos estáticos)
  8. Devolución de mensaje unificado
  9. Manejo unificado de excepciones (ControllerAdvice).
  10. Configuración de parámetros de JVM y configuración de algoritmos de GC
  11. Prueba de presión de rendimiento Jmeter

Estén atentos para recibir más atención. ¡Espero escribir un tutorial para cada punto técnico cuando tenga tiempo!

Notas de trabajos anteriores:

1、概述
安全性、稳定性、apache和互联网产品落地案例

使用技术
语言、微服务架构、日志监控、监控、RPC框架、配置中心、注册中心、
分布式事务、缓存工具、分布式事务、限流和熔断、API网关调度、数据传输

swagger-ui和postman
构建工具、迭代工具、部署工具(Docker和linux)

开发工具

设计理论:DDD


2、总体架构设计
逻辑架构
系统集成架构

3、关键方案设计
高并发查询
无会话机制
日志规范(日志脱敏、链路跟踪)
监控平台(数据埋点)
公共组件(上传下载、数据库、重复提交、幂等校验)
安全设计(跨站脚本攻击、sql攻击、跨站伪造攻击)
前后分离(动静分离)
统一报文返回,统一异常处理。

5、未来发展计划
流量控制、网关、中心模块拆分
双活方案设计
概念性描述

Supongo que te gusta

Origin blog.csdn.net/soft_z1302/article/details/111249637
Recomendado
Clasificación