Во-первых: вы измерили (и можете подтвердить), что это медленно? То, как вы задаете свой вопрос, звучит так, будто вы просто предполагаете, что это ваше узкое место.
Далее: Генерация счетчика Liferay не должна включать новый выбор для каждого созданного объекта (чтобы сгенерировать новый идентификатор. Если вы посмотрите на portal.properties, которые вы можете переопределить в portal-ext.properties, вы найдете этот раздел:
##
## Counter
##
#
# The counter operates with its own data source to prevent deadlocks. By
# default, the data source created for the counter uses the same settings as
# those used to create the data source used for the rest of the portal. That
# happens because the counter service will look up the properties prefixed
# with "jdbc.default." to create its data source. See the JDBC properties
# prefixed with "jdbc.default." for more information.
#
# Setting a different value for the counter JDBC prefix allows you to better
# fine tune the counter data source with its own set of configuration
# settings for high availability installations. Note that these settings,
# though separate, are a copy of the default settings with the newly
# overridden values.
#
counter.jdbc.prefix=jdbc.default.
#
# Set the number of increments between database updates to the Counter
# table. Set this value to a higher number for better performance.
#
counter.increment=100
#
# You can further fine tune the counter increment for specific counter
# names. This entry will ensure that the counter name
# "com.liferay.portal.model.Layout" or anything that starts with
# "com.liferay.portal.model.Layout#" will only increment by 1.
#
counter.increment.com.liferay.portal.model.Layout=1
Когда вы посмотрите на создание пользователя, вы обнаружите, что создание идентификатора выполняется CounterLocalService. Вы можете либо посмотреть на эту реализацию, но я рекомендую не менять такую центральную службу. Однако ваш пробег может отличаться.
ИМХО, вы должны профилировать свое создание пользователя, проверить, что является вашим фактическим узким местом, и исправить его. Это может быть количество транзакций, это может быть что-то еще, что происходит во время этой операции (например, выбор ролей, групп и т. д.).
Также обратите внимание, что Liferay может работать с импортом пользователей по запросу, например. это один из режимов работы интерфейса LDAP: вы можете просто подключиться к LDAP без фактического импорта пользователей. Пользователи будут импортированы в тот момент, когда они войдут в систему. Если у вас есть миллионы пользователей, они, вероятно, не входят в систему одновременно, поэтому вы автоматически распределите нагрузку. Если вы реализуете что-то вроде LDAP или просто загружаете своих пользователей на сервер LDAP, это ваше решение.
person
Olaf Kock
schedule
20.08.2014