On what is architecture, a more popular term is "the highest level of planning, the difficult decision to change," these plans and decisions laid the future direction of things and the final blueprint.
In this sense, life planning is also a framework. Choose what school, study what major, into what company, what to look for, what kind of life, are the framework of their own life.
specifically to the software architecture, Wikipedia is defined as: "An abstract description of the overall structure and components of the software used to guide the design of all aspects of a large software system." Each important component of the system and its relationship constitute the system architecture, these components can be specific functional modules, but also can be non-functional design and decision-making, they are related to each other to form a whole, together constitute the software system architecture.
The architecture is to abstract and simplify complex problems, and you may find it easy to say, but hard to do, and how to get started quickly. Can observe more, according to the material decision consciousness, use the real life scene (user story, want many stories) to restore this series of problems, seize and extract the core characteristics.
Architectural Ideas
CPU operation speed >>>>> memory read/write speed >>>> disk read-write speed
Meeting business development needs is the highest standard
Business modeling, abstraction and enumeration are two ways to balance and not go to extremes
The model should be able to react more realistically to the nature of things, not the piling up of noun concepts and the excessive design
The key to the infrastructure is to separate the different business areas, different technical areas, so that the entire system has the ability to continuously optimize.
Separating the underlying services, business rules, business processes, and selecting the right tools for outsourcing business rules and business processes
Separation of business components and technical components, high classified collection, low coupling-the execution of business information can be decentralized, but the management of business information should be concentrated as much as possible
Do not let the logical architecture of the software be tied to the final physical deployment-Choose the right technology instead of the advanced technology and adjust the technology used as the business grows
A good system architecture needs the right organizational structure to protect-the change of team members ' minds, long and difficult
Business architecture, System architecture, data model
Facing a new business, how to system architecture.
Business Analysis: Output Business architecture diagram, how many business modules are there in the system, how many layers are there in the front user to the bottom.
System Division: According to the business Structure diagram output system architecture diagram, need to think about how many systems this business is divided into, perhaps a system can support multiple business. Based on what principle to split a system into multiple systems. And based on what principle the two systems are merged into one system.
System layering: The system is a few layers of architecture, based on what principle of a system layered, divided into layers.
Modularity: How many modules are in the system and what needs to be modular. Based on what principle to turn a class of code into a module.
How to Modularize
Based on horizontal segmentation. A system is divided into several modules according to the business type, such as Rights Management module, user Management module, various business modules, etc.
Based on vertical segmentation. Dividing a system vertically into multiple modules, such as DAO layer, service layer, and business logic layer, according to the system level.
Based on a single responsibility. The code is abstracted out of responsibility to form a single module. Put the code of the same responsibility in the system in one module. For example, we develop the system to butt multiple channels of data, each channel docking and data resolution, in order to avoid the interaction of different channel code, we put each channel code in their respective modules.
Based on variable and easy to change. Abstract code that is not easy to change into a module, such as the system's more general functions. Place the variable code in one or more other modules, such as business logic. Because the variable code is often modified, will be very unstable, after the variable code in the modified, will not be transmitted to the same bug code.
Stability of the lifting system
Flow control
Double 11, for some important interface (such as the account number of the query interface, shop home) to do flow control, exceeding the threshold of direct return failure. In addition, for some unimportant business can also consider the use of downgrade scheme, greatly promote-> mail system. According to the 28 principle, the big sellers in advance about 1W in the cache to preheat, and set the start and end time, during the activity of this part of the big sellers do not send transaction mail reminders to reduce the SA mail server pressure.
Disaster tolerance
Maximize the availability of the main link, such as the order in which I handle the transaction, and the next single process has preferential business logic, at this point need to consider the UMP system hangs, will not affect the user orders (the following can be modified by the price to make up), the way is, if the discount hang off, and then render the page, and add UMP shielding mark, The UMP code logic is automatically masked when the order is down. In addition, it will record the UMP system is not used, a certain amount of time over the threshold, the system will automatically alarm.
Stability
Third-party systems may be unstable, with interface timeouts or downtime, and in order to increase the robustness of the system, the timeout time and exception capture processing are set when the interface is invoked.
Capacity Planning
Do a good job of capacity planning, system between the strong and weak dependence of carding. For example: hot and cold data processing, early orders using Oracle storage, as the number of orders more and more, query slow, consider data migration, introduce a history table, the archived records migrated to the history table. Of course, the best way is to divide the library into tables.
Distributed architecture
Distributed Systems
Distributed caching
Distributed data
What is the similarity between APIs and Lego blocks?
I believe most of us like to play with high building blocks in childhood. The real fun and attraction of Lego blocks is that even though the boxes are all with a sketch, you can end up with all sorts of looks or styling.
The best explanation for APIs is that they are like Lego blocks. We can combine them in creative ways without paying attention to their original design and implementation intent.
You can find many similarities between the API and Lego blocks:
Standardization: Generic, standardized components, as basic building blocks (building blocks);
Usability: Emphasize availability, with documentation or instructions;
Customizable: Use different APIs for different functions;
Creativity: The ability to combine different APIs to create mixed results;
Lego and API have a very simple interface/interface, and with the help of such a simple interface/interface, it can be very intuitive, easy and fast to build.
While Lego and APIs may be accompanied by schematic images or use of documents, presumably describing the recommended play or use, the really exciting results or gains are created by creativity.
Let us think carefully about the above formulation. In many cases, the user of the API builds a fault between the API's builders who have exceeded the intended service or product, what the API users want, and what the API builder thinks the user wants. This is true, and in the IoT field, we use APIs to create some very creative usage scenarios.