Recently, I have summarized some ideas and conclusions on solutions and architecture. We hope to save some time in thinking. What the Chinese IT industry lacks is systematic engineering, summary and sharing of thinking and knowledge.
When we make new architecture design and program rehearsals, the most common ways of thinking are:
0. Business Solution Analysis
1. Select the overall technical solution and overall system architecture based on the Business Solution
2. What kind of open-source framework or components are used in technical solutions for integrated rehearsals.
3. Adjust the optimization scheme.
Next, let's look at the frame or component selection layer by layer.
0. Basic business type. It can be preliminarily analyzed as a roa or SOA system, and whether enterprise-level business is required in the system (mainly focusing on transactions)
1. Overall technical framework selection, SOA-type systems, business-oriented solutions, and service-oriented systems. ROA is mostly a simple resource-oriented system, but it is not analyzed here.
For complex enterprise-level business solutions, solutions such as J2EE or ssh/SSM are generally used.
2. During the rehearsal process, we basically considered a more service-oriented system and conducted regular open-source response,
A. Web systems can use mature frameworks, such as management systems, ssh, and a conventional PHP Solution. There are good open-source products in these solutions, such as php cms (Drupal is recommended for deep customization, and more learning costs are required), SNS, CRM, etc,
B. if you consider a general non-web system, you can consider a lot of open-source NIO or RPC frameworks based on it to provide services to clients, such as language-independent ice, thrift, protobuf, language-related (Java: Mina, netty, etc.) (C/C ++: Ace, boost, etc ),
C. The basic data of these services can adopt a variety of data solutions, including databases and file storage. The database has various solutions. to preview commonly used SQL databases, you can choose MySQL, progresql, non-relational databases (nosql) can choose simple and easy-to-use MongoDB, cassadra, redis, hbase, and so on. However, when selecting nosql databases, these are all new databases, there are deficiencies in stability. Recently, Foursquare, Facebook, and other large companies have encountered various serious problems when using these databases, and there are also many file storage services, you can use simple and easy-to-use monglefs, NFS, HDFS, and other open-source solutions, such as red5 (FLV) and live555, for multimedia services. ImageMagick and other solutions can be used for images.
D. mobile client solution: Generally, clients can use a variety of open-source solutions to solve this problem. It is very mature, such as QT. Generally, it is a mobile platform with multiple sets of problems. There are some common cross-platform mobile solutions, older ones, such as ADL and PJ... for Android, IOS, and Windows 8, there are phonegap, titanium, xui, jquerymobile, touch .... and so on.
3. Many things can be done in terms of adjustment and optimization solutions.
A. Before clustering services, CDN should be considered to save time and costs, and the goal should be predictable.
B. Service Cluster solution optimization. There are too many cluster solutions available here, such as reverse Service proxy and as-based various load solutions. Ha, loadbalance, and redundant Hot Standby are indispensable in clusters. The database also has various data security policies.
C. Optimize the link bottlenecks provided by various services. There are also many open-source solutions for cache in various stages, such as memcached. redis and ncache .......