Tags: cached scalability jfinal breadth IMG SSM ESS target Performance tuning
Without the idea of design, you cannot become an architect. The architect is a good piece of code, drawing a beautiful uml/prototype, wrote a technical document, more to solve the project key technology of the comprehensive talent. Architect = Front-end engineer + back-end Programmer + System Analyst + Key Technology Solutions + various technology collocation + design mode + deployment tuning + other, visible architects are generalists, and play a key role in connection management and project membership in the project. So you need to understand requirements, design, code, deployment, architecture, servers, operations, tuning, and so on, on the road to an architect on the big God level.
Simple system Architecture Diagram
An architect who can take on enterprise applications, the words that often appear in the mind are: load balancing, clustering, distributed, high concurrency, high availability, manageability, and so on, roughly speaking, you should have the following knowledge and skills:
(1) Data layer: Focus on the choice of cluster scheme, such as MySQL cluster, cluster solution, need to choose the solution to business, such as multi-master, master preparation, read-write separation, and so on, whether the need to do high availability, is using LVS, or zookeeper, Whether you need such as MYCAT class middleware to manage the database or to do data fragmentation and so on.
(2) Service layer: Fashionable point, choose Dubbo, Micro-service Let the team development coupling degree is not so high, each concerned about their own modules, are published in service mode. The traditional point with springmvc+restful, in my opinion, for the concurrency of the system, there is no need to use Dubbo. Cache selection, involving file cache, database cache, can be used memcached, Ehcache, Redis.
(3) Application layer: The frame is too many, ssh,ssm,jfinal and so on, select the framework suitable for the project team; UI interface, h5 is very beautiful, but for the browser compatibility will make the developer cry, can choose mature ext or Easyui.
(4) Network layer: Most developers do not have to involve, can understand the next F5 and so on.
(5) Deployment: If you need to deploy with Docker, the open-source Docker container makes deployment lightweight, and it's easy to expand a node that can be used for scenarios with high concurrency and high scalability requirements. The advent of Docker can be fully implemented with one-click Deployment. Whether load balancing is required, you can choose a hard load (the F5 mentioned above), or you can use a soft load (nginx). The soft-load scheme can be simple, apache+tomcat, need to consider the session copy, a bit more complex select Lvs+haproxy. With the help of Maven, you can build your own maven, and instruct project members to use MAVEN to package the release.
(6) Security: Most of the security in the network layer is resolved, but the application of security can not be ignored, such as the need to consider SQL injection, authorization authentication, these current framework to solve, the focus of security issues from the framework itself, most of the application Selection Framework is open source, if the team is not able to fix the vulnerability can only be updated.
(7) Other aspects: testing (automated testing), versioning (git or SVN), big Data (odd heat), artificial intelligence (tall), etc.
Someone asked, why does the architect still write code? I think, need to write as always, but the goal is not the same, the theoretical level and practical ability need to improve at the same time. Depth, attention to design ideas and patterns, breadth, for the forefront of technology, to pursue and research, so as to the future technical framework selection to make a reasonable decision.
Java from getting started to architects | High concurrency | High performance | high Availability | distributed | Performance Tuning | Design Patterns | Large e-commerce projects