Parler de la construction de connaissances théoriques sur l'architecture distribuée


Les architectes accordent généralement la priorité à la sécurité, à la stabilité et à un débit élevé. Haha, en tant que rookie, je me suis demandé d'installer un B et de rappeler l'architecture précédente

base

idée

    Le CAP (cohérence, disponibilité, tolérance aux pannes de partition) est impossible à réaliser tous les trois, et deux peuvent être atteints au maximum. Dans la construction du système, la discussion sur la construction du système donne ici la priorité à plusieurs points, de haut en bas pour la sécurité, la stabilité et le débit élevé (la discussion du schéma du système est dans la "conception du schéma clé")

Sélection technique

En fait, la sélection technique d'un cadre est déterminée en fonction de l'utilisation réelle du scénario d'entreprise et de la sélection des types de technologie au moyen de multiples comparaisons techniques. La méthode de comparaison était limitée dans mes capacités personnelles à l'époque. J'ai pleinement utilisé de ma connaissance de l'industrie et de la consultation des ressources humaines et des papiers de l'industrie Inquiring, il est dit que je ne peux pas être un géant, mais je peux voir une certaine hauteur sur les épaules des géants.
    Ici, nous parlons principalement de frontaux et d'arrière-plans et de terminaux mobiles, de vue frontale, de java back-end, d'Android WebView et de h5. Voici une brève introduction de la technologie simple, la description spécifique dans le schéma suivant

Le
     framework de base frontal utilise vue, l'élément-ui côté PC de rendu de page et VUX côté mobile. Nous ferions mieux de réaliser une encapsulation secondaire de element-ui. Définissez les spécifications de développement, recommandez d'utiliser les contraintes eslint et typeScript, les outils de développement utilisant vs code et la configuration liée aux outils. La configuration personnelle précédente était définie comme le
code vs suivant:

{
 "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"
}

Les spécifications de conception eslint sont les suivantes :

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
 }
}

Le back-end java
    se concentre sur plusieurs mots-clés: java8, réglage et conception jvm , maven, git, protocole Alibaba (si vous voulez des points, demandez-moi de le donner) , framework de base spring boot / cloud (sofa ou spring cloud alibaba), docker ou conteneur de déploiement Linux. Notre version Java utilise jdk8 +, il est recommandé d'utiliser Apache open source et le protocole Alibaba, d'utiliser l'outil de développement ide et d'installer le plug-in de protocole Alibaba. Utilisez maven comme outil de construction et créez votre propre bibliothèque de composants maven. L'outil de contrôle de version utilisé est git ou gitlab.      En fait, le
terminal mobile WebView et h5
ont de meilleurs produits Internet destinés au secteur financier, tels que mpass, voici juste une brève explication, vous pouvez écrire WebView pour obtenir une interaction js avec la page frontale h5, et h5 peut utiliser VUX.

Conception technique back-end

Il ne s'agit que d'une introduction technique, pour ne pas entrer dans les détails. De plus, lors de la construction d'une solution technique, ce n'est pas un cache de cluster RPC ou Redis quand il se présente. C'est une mauvaise approche. Chacune de nos architectures est construite sur la base de la conduite commerciale, et nous concevons également des concepts de conception DDD. Infrastructure recommandée: architecture technique spring boot, architecture de couche de persistance de base de données mybatis, sous-table de base de données mysql sous-base de données (division horizontale, division verticale), conception de schéma (conception d'architecture de cas visio & UML & ppt, conception de base de données Power Design, conception de prototype axure), débogage d'interface outils (swagger-ui et postman). Ce qui suit est la sélection technique du système de construction précédent de l'individu, le noir est la technologie adoptée par l'individu

Architecture de microservice RPC : spring cloud , spring cloud alibaba, dubbo, nuage de printemps utilisé personnellement avant et plus tard, la
surveillance d' alibaba de nuage de printemps est devenue populaire : Cat , Zipkin, Pinpoint,
registre SkyWalking : consul , zookeeper, euroke, précédemment suggéré par le consul de l'industrie, plus tard, la Chine a fermé sa source.
Centre de configuration : apollo , nacos, config cloud de printemps,
outil de cache de configuration dynamique : redis ou memcache, vous pouvez utiliser des transactions distribuées en combinaison avec la session de printemps : 2PC, concept TCC, redis pour réaliser des transactions , MQ pour réaliser des solutions asynchrones, zookeeper ou base de données Caractéristiques ACID. Limitation de courant et fusible : fusible Hystrix , via la planification de la passerelle API de limitation de courant sentinelle : passerelle cloud de printemps et passerelle écrite personnellement ...



Transmission de données : utilisez la transmission json, Jackson (ObjectMapper) et gson et DTO, VO, VO, PO
accès à la couche de persistance du concept : file d'attente de messages mybatis : RabbitMQ, RocketMQ, ActiveMQ, Kafka, IBMMQ , mais RocketMQ est recommandé ici

Conception de l'architecture globale

Après avoir combiné la sélection de technologie ci-dessus, il s'agit de compiler des dessins de conception structurelle, principalement comme suit

  1. Architecture logique
  2. Architecture d'intégration de système
  3. Structure de déploiement physique
  4. Dessin de conception de base de données
  5. Module central du système divisé
  6. Contrôle de flux, passerelle, division du module central
  7. La conception de la solution à double actif, le problème à considérer dans la même ville à double actif est le cache

Conception de cas clés

La conception du schéma clé consiste à piloter la conception dans le domaine DDD. En fait, il s'agit de diviser le grand schéma en petits schémas et de les compléter indépendamment. Les petits schémas sont fusionnés pour finalement réaliser le grand schéma. Les points suivants doivent être pris en compte (individuel)

  1. Requête simultanée élevée (sous-base de données et sous-table, optimisation sql et requête de curseur à l'aide de mybatis, la requête de curseur est fermée, vous devez donc obtenir sqlsession ou @Transational transaction)
  2. Aucun mécanisme de session (cache de base de données ou outil de mise en cache tiers redis)
  3. Spécification de journal (filtre de désensibilisation de journal, algorithme de flocon de neige de suivi de lien)
  4. Plateforme de surveillance (data point enterré cat)
  5. Composants publics (chargement et téléchargement de traitement unifié de l'intercepteur HandlerInterceptor, sélection de base de données et shardingsphere, soumission répétée de redis, vérification de l'idempotence de jeton, vérification de la signature sm2)
  6. Conception de la sécurité (filtre d'attaque de script intersite, prétraitement de filtre et d'instruction pour empêcher les attaques SQL, vérification inter-domaine d'attaque de falsification intersite)
  7. Séparation avant et arrière (mouvement et séparation statique, serveur nginx, serveur de fichiers statiques)
  8. Retour de message unifié
  9. Gestion unifiée des exceptions (ControllerAdvice).
  10. Réglage des paramètres JVM et réglage de l'algorithme GC
  11. Test de pression de performance Jmeter

Restez à l'écoute pour plus d'attention. J'espère écrire un tutoriel pour chaque point technique quand j'aurai le temps!

Notes de travail antérieures:

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

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

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

开发工具

设计理论:DDD


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

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

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

Je suppose que tu aimes

Origine blog.csdn.net/soft_z1302/article/details/111249637
conseillé
Classement