Una de la Guía del arquitecto Java [Avanzado]: ¿Cómo diseño de la arquitectura

prefacio

  Este blog es una serie larga blog para ayudar quiere mejorarse a sí mismos, superar los obstáculos técnicos, pero no saben cómo sufrir para aprender el sistema a fin de mejorar los zapatos de sus hijos autor asume que el lector tiene un 3 - 5 años de experiencia en el desarrollo, java base sólida, quiero ruptura su cuello de botella técnico para convertirse en un excelente arquitecto, llamado java base sólida, tales como:
  . idioma 1.java tres características
  lenguaje 2.java y representa una gama de ocho tipos básicos.
  3. ¿Por qué se pierde flotador y la presencia de doble precisión?
  gama 4.publish / privada / default / protegido representado?
  5.static / uso final y significado.
  una base sólida de los zapatos de Java, estos problemas deben ser capaces de responder a ella, y ser capaz de saber qué estos conocimientos, desde la parte inferior principio de entender por qué esto es, después de tener estos básico, avanzado para romper su propia, para ser un mejor ingeniero.

  Por supuesto, esta serie es el autor original, muchos puntos de vista son propio punto de vista del autor, si no es incorrecta o que quieren discutir, muy bienvenida, después de todo, todo el mundo comete errores, que no progresan juntos Miaozai!

Cómo convertirse en un arquitecto?

  Creo que para convertirse en un arquitecto, primero debe ser su primer punto de la tecnología lo suficientemente bueno, lo suficiente profundidad y amplitud de conocimientos, experimentan problemas se pueden encontrar rápidamente la forma más adecuada para resolver la mente. En segundo lugar, la arquitectura los maestros llevan el proyecto en su conjunto, se trata de personas es esencial, por lo tanto, se comunican con la gente estas habilidades blandas son también esenciales, por supuesto, esto varía, algunas personas nacen más se ocuparán de las personas, pero en cualquier caso, suficiente técnica excelente es la condición básica, por supuesto, quiere ser un arquitecto buena, la experiencia práctica de desarrollo es esencial, no el arquitecto de muchos años de experiencia no funciona, pero por lo menos, queremos ser un arquitecto, debe primero dominar los conocimientos teóricos ?? no es ella o hablar de lo que practicarlo por lo resumí un mapa arquitecto aprendizaje de Java Avanzado:
archivo
  por supuesto hay muchas técnicas y habilidades también son requeridos, tales como: el arquitecto de salida de documentos, tendrá que dibujar figuras afines ejemplo común: un diagrama de flujo / diagrama de casos / tiempo / diagrama de carril / diagramas diagrama / colaboración del estado, etc. (recordemos que estos cursos en la universidad no es un maestro, pero no nos importó todos hablaron de nada, al menos el autor? De esta manera, ja, ja ~). Otro mecanismo ejemplo java reflexión y su API asociada, de alto rendimiento marco NIO --- Netty y así sucesivamente. Si necesitamos grandes volúmenes de datos correspondientes a conocer flink / parpadeo / de chispas / hadoop / hbase, no necesariamente todos ser, pero al menos mi mente no debe ser un concepto, esta tecnología está haciendo, de modo que cuando la gente dice puede entender. en cuanto a por qué no dibujar en la figura anterior, porque sólo está dispuesto a los artículos de seguimiento de escritura el contenido de la figura, y el resto de izquierda a los zapatos de sus propios hijos lo aprendan. por supuesto, porque el blog al espacio limitado, cada tecnología no puede ser un cien por ciento se mencionan todos los puntos de conocimiento, sino para asegurar que todos están hablando de productos secos, la energía Leamos zapatos de los niños a la ganancia de algo!

Lo que los arquitectos deben preocuparse por?

  El problema, en otras palabras, hacer lo que deberíamos estar preocupados en que la arquitectura de diseño, creemos que los dos tipos, requisitos y exigencias funcionales y no funcionales de grandes términos, el desglose de las siguientes seis áreas:

1. Función

  Recuerdo que mi profesor dijo una vez, la función es 0 y el otro es 1, entonces arquitecto de hardware rápido, si no funciona, entonces el diseño de hardware rápido es inútil, y sólo bajo la premisa para cumplir con el diseño funcional y otra para ser útil.

2. Rendimiento

  Para los sistemas modernos, más corto es el tiempo de respuesta es más probable que retener a los clientes, después de todo, personas que se levantarían para abrir una página que esperar 10 segundos o incluso minutos de la misma? Por lo menos en mi visita a cualquier sitio Web, más de cinco segundos en cargar una página directamente apagado. comúnmente usan los indicadores de rendimiento (QPS consultas por segundo tasa) / TPS (transacciones por segundo tasa). por supuesto, la necesidad de avanzar en el desempeño ambiental de prueba (del medio ambiente y la producción-como el medio ambiente) después de la finalización del desarrollo del sistema, común rendimiento de las herramientas de prueba ApacheBench (referido como ab) / http_load / jmeter etc. .QPS también seguir el principio de 28, el día 80% del tráfico se concentra en el 20% de las veces, entonces podríamos estimar el sitio web QPS, la planificación de la configuración del servidor, Si el rendimiento no es hasta, la necesidad de optimizar, métodos de optimización comúnmente más máquina (bruta), el extremo delantero de la optimización (la CDN / estático y separación dinámica / número disminución de solicitudes /), la optimización de caché código backend (por ejemplo redis), JVM optimizado.

3. disponibilidad

  Facilidad de uso es un sistema distribuido moderna, cuando hay uno o más de sus subsistemas nodo baja cuando todavía ser capaz de continuar para proporcionar los servicios normales. Medios utilizados comúnmente de un clúster y conmutación automática por error, casi todos los sistemas distribuidos tecnología de apoyo el uso de alta disponibilidad, tales como el almacenamiento en caché Redis oficiales Redis-cluster cluster, MongoDB fragmentación del clúster, mensajería middleware de clúster (ActiveMQ / RabbitMQ / kafka / RocketMQ), base de datos de MySQL cluster y así sucesivamente, si todo lo anterior son conscientes de los zapatos para niños, en suma, se darán cuenta de que la idea central es la misma, para proporcionar redundancia de datos a través de la agrupación, y por medio de la detección automática y el mecanismo de conmutación por error para asegurar los componentes de alta disponibilidad.

4. extensibilidad

  La escalabilidad se refiere a cuando la capacidad del sistema es insuficiente o excesiva, si se puede facilitar el desarrollo de la capacidad de procesamiento de expansión / contracción, muchas grandes empresas están haciendo bien en este sentido, está en contenedores mejor estrategia, el uso ventana acoplable + K8S gestión de la implementación , puede ser fácilmente expansión o contracción de la capacidad de procesamiento, mejor uso racional de los recursos.

5. Escalabilidad

  La escalabilidad se refiere al tiempo cuando hay cambios o nuevos requerimientos se producen, si la función se puede lograr sin cambiar el código o cambio muy poco código. La escalabilidad es una prueba de habilidad de un arquitecto, el autor parece como el diseño una buena escalabilidad del sistema, además de la consideración anterior, el uso de patrones de diseño es bastante un buen programa en escenarios apropiados, por lo que los arquitectos, el modelo de diseño es! muy importante, por ejemplo, hay un servicio de carga, utilizando el protocolo FTP cargados, que apach paquete FtpClient basado en un conjunto de interfaces, además existe una demanda en este momento, se requiere para utilizar el protocolo SFTP, utilizamos otro conjunto de paquete de interfaces de JSCH, que si hay seguimiento al nuevo acuerdo? cada uno adicional tenemos que añadir un protocolo para adaptar el código, esta vez utilizando el modelo de adaptador no se puede ser una buena solución al problema? esto también es consistente con la idea de patrones de diseño, programación a una interfaz, un nuevo acuerdo en el futuro, sólo necesitamos un nuevo por una clase de implementación, sin alteración del código original no se encuentra en los cambios de código en un mínimo de satisfacer la demanda?

6. Seguridad

  Un sitio, si está bajo una gran cantidad de acceso de los usuarios, la red es vulnerable a los piratas informáticos, medios comunes de ataque incluyen:

6,1 XSS ataque

  La esterilización es un medio común de defensa (no confiar en una entrada de usuario, y el filtro estricto de suma de control de entrada, tal como el uso de "& lt" en lugar de "<", etc.).

6.2 ataques de inyección SQL

  Antes de usar JDBC cuando se utilizan los ataques de inyección SQL declaración de causa, por lo que hay una vuelta precompiled PreparedStatement forma de ataques de inyección SQL Prevenir, y el caso PreparedStatement mayor eficiencia de un gran número de consultas.

6.3 ataques CSRF

  Entre sitios de falsificación de petición, la víctima de robo de galletas atacante, el envío de solicitudes maliciosas en nombre de las víctimas, a los mecanismos de defensa comunes son: enviar código de validación de formularios (experiencia de usuario relativamente poco amigable), dirección URL con token de validación, verificación HTTP árbitro.

6.4 ataque DDoS

  ataques de denegación de servicio, ataques DOS versión avanzada, la defensa es muy difícil, y el programa es relativamente complejo, la industria es más potente Ali, 11 dobles muchas veces ha resistido una gran promoción, después de todo, Ali Riqueza hermano (Wu Han Qing, Ali, el más joven P8, como la existencia de Dios) grupo de seguridad y de su dirección.

  Por supuesto, hay otros ataques, aquí no voy a enumerarlos aquí, está interesado en los zapatos de los niños pueden informarse sobre el próximo artículo, empezamos contenido avanzado --- artículos de JVM, así que estad atentos!

  Si usted siente que los bloggers escriben bien, atención de bienvenida a los micro-canal bloggers número público, los bloggers de vez en cuando compartir la tecnología seca!
archivo

Este artículo del artículo de blog de múltiples plataformas OpenWrite liberación!

Supongo que te gusta

Origin www.cnblogs.com/wukongbubai/p/12529176.html
Recomendado
Clasificación