The Tall Taobao architecture
The above diagram is a number of security system systems, such as data security system, application security system, front-end security system.
Architect definition
Baidu Encyclopedia, the system Architect is a need to control the whole and need to understand the local bottlenecks and based on specific business scenarios to give solutions to the team leadership figure.
Architect Job Functions
Software architects play an important role throughout the software development process, and as the development process progresses and its responsibilities or concerns change constantly, in the requirements phase, the software Architect is primarily responsible for understanding and managing non-functional system requirements, such as software maintainability, performance, reusability, reliability, availability, and testability, and so on, In addition, architects often review the needs of customers and marketers. Identify the design proposed by the development team; As the requirements become clearer, the architect's focus shifts to the organization's development team members and the development process definition; In the software design phase, the architect is responsible for the entire software architecture, key artifacts, interface and development policy design; In the coding phase, the architect becomes a consultant for detailed designers and code writers, and often holds technical seminars, technical courses, etc. as the software begins testing, integration and delivery, integration and test support becomes the focus of the software architect, and when software maintenance starts, The software architect begins to make decisions about whether the next version of the product should add new functional modules.
the skills that you need to become a Java architect.
The architect, thinking about the global thing, is how to organize your system to meet business requirements, performance requirements, scalability (scalability), scalability (extendability), Pre-and compatibility. The things that may be involved include everything from hardware to software, which is untold.
Since the Java architect, first of all, if you are a high-level Java attack lion, use a variety of frameworks, and know how they implement the principle. JVM virtual machine principle, tuning, understand that the JVM allows you to write better code; Pool technology, what object pool, connection pool, thread pool ...:; Java reflection Technology, but there are serious performance problems, alternative Java bytecode technology; NIO, there's nothing to say, It is noteworthy that the "Direct memory" features, the use of the scene; Java multithreading synchronous asynchronous; Java various collection Object Realization principle, understand these can let you choose the appropriate data structure in solving the problem, solve the problem efficiently, such as hashmap principle of realization, A lot of people over five years of experience don't know, and there are performance problems when it comes to expansion. Without figuring out these principles, you can't write efficient code, and you'll think you're doing the right thing. In short, the more basic things more important, many people think they will use them to write code, in fact, just know how to invoke the API, it is still far from the use.
Proficient in the use of various data structures and algorithms, arrays, hashes, lists, sorting trees ..., a sentence is either time to change space or space to change time, here to expand a lot of, need to have some application experience, to solve a variety of performance or business problems.
Skilled use of Linux operating system, the necessary, nothing to say.
Familiar with the TCP protocol, create a three-time handshake and disconnect four times the entire process of handshake, do not understand, can not be optimized for high concurrent network applications; familiar with HTTP protocol, especially HTTP headers, I've found that a lot of work for more than five years doesn't clear the lifecycle of session and Cookie and how they relate to each other.
System cluster, load balancing, reverse proxy, static and dynamic separation, Web site statics.
Distributed Storage Systems Nfs,fastdfs,tfs,hadoop understand their pros and cons and apply scenarios.
Distributed caching technology Memcached,redis, improve the performance of the system must, in a word, put the contents of the hard disk into the memory to speed up, by the way an algorithm consistent hash.
Tools Nginx essential Skills super easy to use, high-performance, basically will not hang off the server, a lot of functions to solve various problems.
Database design capabilities, MySQL necessary, the most basic database tools, free to use, the basic parameters of its optimization, slow query log analysis, master-slave configuration, at least to become half mysqldba. Other NoSQL databases such as MongoDB.
There is also the queue middleware. such as message push, you can first write the message to the database, push put on the queue server, by the push server to queue to obtain processing, so that the message can be placed in the database and queue directly to the user feedback, push process by the push server and queue Server completion, the benefits of asynchronous processing, ease the server pressure, the solution of the Lotus root system.
Want to become an architect is not to understand a lot of technology on it, these are the basis for the problem, is the tool, do not know how to solve these solutions. This is necessary to become an architect.
Architects also need to address business features, system performance requirements to solve the problem of the lowest cost of the design is qualified, someone else a hundreds of users of the system, a small amount of traffic, data, you give people on the cluster, distributed storage, high-end server, in order to structure and architecture, this is the most nonsense, The architect's role is to meet business requirements first, the second lowest hardware network cost and technical maintenance costs.
The architect also needs to be based on the business development phase anticipate the solution to the next phase of the system architecture, and take into account the upgrade of the schema when designing the current architecture, and make it easy to upgrade; otherwise, if the system bottleneck comes up, there is a problem, or the existing schema cannot be expanded to throw the redo directly, or expand the problem of a lot of trouble, which will cause losses to the enterprise.
The road to architecture is a long way off. Programming and architecture design are interoperable, and everyone can move from designing a program to designing a system architecture. If not now, I recommend that you can start from the domain-driven design of the concept, which is a business-oriented design, can be designed to develop a landing structure has a great help. We can add group: 6,560,395,031 exchanges, the group will regularly share some knowledge of the Java architecture, hoping to give you some ideas and inspiration. Finally, quoting the famous phrase "Yu June", we as an architect should have the heart of "skepticism: self Iteration".
Author: Dazi Teacher
Link: http://www.jianshu.com/p/0452b2ca9b89
Source: Jianshu
Copyright belongs to the author. Commercial reprint please contact the author to obtain authorization, non-commercial reprint please indicate the source.